AngularJS只显示属于子数组
AngularJS display only belonging subarray
我正在从事一个项目,该项目要求我将多维数组顶层中的一些项目列为复选框,然后根据选中的项目,我应该只显示属于每个顶级项目的那些子数组项目
现在请耐心等待,因为我才刚刚进入AngularJS,其中很多对我来说都是陌生的,而且仍然很陌生。我试图找到类似的东西,但没有运气。
我有一个看起来像这样的范围。
$scope.options = [
{ pubId:'1' , pubName:'Option A' , pubSubs:[
{ pubSubId:'1' , pubSub:'Sub Option A 1' },
{ pubSubId:'2' , pubSub:'Sub Option A 2' }
]
},
{ pubId:'2' , pubName:'Option B' , pubSubs:[
{ pubSubId:'3' , pubSub:'Sub Option B 1'},
{ pubSubId:'4' , pubSub:'Sub Option B 2'}
]
}
];
和看起来像这样的 html...
<div ng-repeat="option in options">
<ul>
<li>
<input type="checkbox" name="pub" value="{{option.pubId}}">
{{option.pubName}}
</li>
</ul>
</div>
<div ng-repeat="option in options">
<div ng-repeat="suboption in option.pubSubs">
<ul>
<li>
<input type="checkbox" name="pub" value="{{suboption.pubSubId}}">
{{suboption.pubSub}}
</li>
</ul>
</div>
</div>
我倾向于以某种方式使用 ng-show/hide,但我不确定这是否是要走的路。
因此,当列出第一个数组顶级项目时
Option A | Option B
如果我只选中"选项 A"
Sub Option A 1 | Sub Option A 2
将显示在下面的列表中。
我知道ng-checking也可能以某种方式用于这种情况。
非常感谢所有帮助。
您可以为此使用筛选器,但是您需要将选择框模型绑定到所选属性才能实现此目的。
未经测试的代码如下:
<div ng-repeat="option in options">
<ul>
<li>
<input type="checkbox" name="pub" ng-model="option.selected" value="{{option.pubId}}">
{{option.pubName}}
</li>
</ul>
</div>
<div ng-repeat="option in options | filter:{selected:true}">
<div ng-repeat="suboption in option.pubSubs">
<ul>
<li>
<input type="checkbox" name="pub" value="{{suboption.pubSubId}}">
{{suboption.pubSub}}
</li>
</ul>
</div>
</div>
创建这些文件
1-手机.html
<!DOCTYPE html>
<head>
<title>Learning AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>
<script src="maincontroller2.js" type="text/javascript"></script>
<style>
.odd{
background:#FFFFCC;
}
.even{
background:#CCCCCC;
}
tr th{
background:#666666;
color:#FFF;
}
</style>
</head>
<body>
<div id='content' ng-app='MyTutorialApp' ng-controller='MainController'>
Select:
<select ng-model='selectedMobile'>
<option ng-repeat='mobile in mobiles' value="{{mobile.id}}">{{mobile.name}}</option>
</select>
Search:
<input type='text' ng-model='searchText' />
<table width="335px" frame="box" rules="all">
<tr>
<th>ID</th><th>Model</th><th>Price</th>
</tr>
<tr ng-repeat="label in mobiles[selectedMobile].models | filter:searchText" ng-class-odd="'odd'" ng-class-even="'even'">
<td>{{label.id}}</td>
<td>{{label.model}}</td>
<td>{{label.price}}</td>
</tr>
<tr>
<td><button ng-click='addNew()'>Add</button></td>
<td><input type='text' size="10" ng-model='newModel' /></td>
<td><input type='text' size="10" ng-model='newprice' /></td>
</tr>
</table>
<p>{{(mobiles[selectedMobile].models | filter:searchText).length+0 }} record(s) found.</p>
</div>
</body>
</html>
2-主控制器.js
var app = angular.module('MyTutorialApp',[]);
app.controller("MainController", function($scope){
$scope.newModel = null;
$scope.newPrice = null;
$scope.addNew = function() {
if ($scope.newModel != null && $scope.newModel != "" && $scope.newPrice != null && $scope.newPrice != "") {
$scope.mobiles.push({
id : $scope.mobiles.length,
name: $scope.newModel,
//price: $scope.newPrice,
models:[]
});
}
}
$scope.mobiles=[
{
id: 0,
name: 'nokia',
models: [
{
id:0,
model:'6600',
price:2000
},
{
id:1,
model:'6610',
price:2100
},
{
id:2,
model:'6300',
price:2500
},
{
id:3,
model:'7610',
price:4100
},
{
id:4,
model:'7620',
price:4500
}
]
},
{
id: 1,
name: 'Samsung',
models: [
{
id:0,
model:'s1',
price:2000
},
{
id:1,
model:'s1.1',
price:2100
},
{
id:2,
model:'s2',
price:2500
},
{
id:3,
model:'s2 mini',
price:4100
},
{
id:4,
model:'S3',
price:4500
}
]
},
{
id: 2,
name: 'iPhone',
models: [
{
id:0,
model:'iphone 3',
price:2000
},
{
id:1,
model:'iphone 4',
price:2100
},
{
id:2,
model:'ipphone 5',
price:2500
},
{
id:3,
model:'iphone 6',
price:4100
},
{
id:4,
model:'iphone 7',
price:4500
}
]
}
];
});
这有你需要的一切,甚至更多...
类似返回的
记录和行替代着色
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- AngularJS只显示属于子数组
- 查找属于 JQuery 生成的数组的图像的宽度
- 为什么下面的JavaScript测试显示元素不属于数组
- 最有效/最快的检查字符串是否属于数组的方法
- 如何检查对象是否在逻辑上属于数组,JavaScript