我尝试使用两个或三个选项创建一个选择列表,这取决于ng-repeat中的第一个选定选项。当客户选择第一个选项" Dome Camera"根据列出的安装项目(在这种情况下:屋顶,墙壁和柱子),在第二个ng-repeat中应该只列出两个选项。
有人可以帮我吗?
<tr>
<td>
<select class="form-control" name="type-camera">
<option ng-repeat="camera in cameraTypes">{{camera.name}}</option>
</select>
</td>
<td>
<select class="form-control" name="type-camera">
<option ng-repeat="mounting in ?????">{{mounting}}</option>
</select>
</td>
</tr>
$ scope.cameraTyps看起来像:
"0": {
"name": "Dome Camera",
"price": 2975.67,
"install": 4,
"mounting": {
"name": "roof",
"name": "wall",
"name": "pole"
}
},
"1": {
"name": "WV-SF135E",
"price": 327.70,
"install": 1.5,
"mounting": {
"name": "roof",
"name": "wall"
},
"lens": "fixed"
}
答案 0 :(得分:0)
这可以帮助您https://stackoverflow.com/a/22017098/1703519
基本上,您可以在选择框中添加ng-change功能,然后您可以更改第二个选择列表动态查看的选项列表。
看看那个答案的小提琴,看一个类似的例子(不完全是你的场景,但是关闭)
答案 1 :(得分:0)
因此,如果我理解正确,您想要使第二个ng-repeat
的列表依赖于第一个列表中所选选项的选择吗?使用ng-model
和ng-change
<tr>
<td>
<select class="form-control" name="type-camera" ng-model="selectedCamera" ng-change="onChangeCamera();">
<option ng-repeat="camera in cameraTypes">{{camera.name}}</option>
</select>
</td>
<td>
<select class="form-control" name="type-camera">
<option ng-repeat="mounting in mountingList">{{mounting}}</option>
</select>
</td>
</tr>
在您的控制器中:
$scope.onChangeCamera = function() {
if($scope.selectedCamera.name === 'Dome Camera') {
//For example
$scope.mountingList = ['Roof', 'Wall', 'Pole'];
}
}
答案 2 :(得分:0)
首先,您的数据结构不正确,我认为您的ld: library not found for -lev
mounting
实际上是object
,因此我对其进行了更改。
第1点:我建议您使用ngOptions代替array
。 ngRepeat
完全针对ngOptions
代码制作。
第2点:您不需要像某些人建议的那样使用<select>
指令或ngChange
,您只需要设置$watch
,然后 Angular 可以完成剩下的工作。
在操作中查看:
ngModel
angular.module('app', [])
.controller('mainCtrl', function($scope) {
$scope.cameraTypes = [
{
"name":"Dome Camera",
"price":2975.67,
"install":4,
"mounting":[
{
"name":"roof"
},
{
"name":"wall"
},
{
"name":"pole"
}
]
},
{
"name":"WV-SF135E",
"price":327.70,
"install":1.5,
"mounting":[
{
"name":"roof"
},
{
"name":"wall"
}
],
"lens":"fixed"
}
];
});