层叠下拉的角度
cascading drop downs in angular
我试图得到一些层叠下拉的角度,填充基于什么之前的下拉选择。所以基本上总共有5个下拉菜单,首先只有第一个下拉菜单会被填充,然后第二个下拉菜单会根据第一个下拉菜单中选择的内容填充(希望使用$http从服务器中获取新信息),以此类推,直到5。
基本上我有这个:
<select class="selectScope" ng-model="scope1">
<option ng-repeat="obj in array" value="{{obj.id}}">{{obj.name}}</option>
</select>
<select class="selectLevel1" ng-model="scope2">
<option ng-repeat="obj in array" value="{{obj.id}}">{{obj.name}}</option>
</select>
<select class="selectLevel2" ng-model="scope3">
<option ng-repeat="obj in array" value="{{obj.id}}">{{obj.name}}</option>
</select>
<select class="selectLevel3" ng-model="scope4">
<option ng-repeat="obj in array" value="{{obj.id}}">{{obj.name}}</option>
</select>
<select class="selectLevel4" ng-model="scope5">
<option ng-repeat="obj in array" value="{{obj.id}}">{{obj.name}}</option>
</select>
我将用$http填充第一个下拉菜单,但没有详细说明,我只是想知道我是否可以让下拉菜单相互触发。如果我一直选择到第5关,然后我重新选择第3关,那么第4关和第5关就会清空(第4关会根据第3关中选择的内容重新填充)。所以我只想让它们相互抵消。我想知道这样的东西是否可能在角。抱歉,如果这是有点健忘,我是全新的使用角。谢谢! !
首先,您应该使用ng-options
而不是ng-repeat
<select ng-model='scope1' ng-change='scope1Change()'
ng-options='obj.id as obj.name for obj in array'>
</select>
然后,在选择的ng-change事件中,您可以为以下选择加载适当的数据。
$scope.scope1Change = function() {
//Build URL based on selection
$http.get(myUrl).then(function(data){
//transform data if required
$scope.array2 = data;
});
}
您可以根据先前选择的值禁用其他select语句
<select class="selectLevel1" ng-model="scope2"
ng-options='obj.id as obj.name for obj in array2' ng-disabled='!scope1'>
</select>
在更改事件中需要一些额外的逻辑来确定是否应该根据需要清除$scope
模型值,但这非常简单
相关文章:
- 没有找到相关文章