我有一个带有ng-repeat的表单,用于加载用户添加的一组计划天数。假设用户已将第一天添加到集合中,并从下拉列表中选择星期一。当用户在集合中添加第二天时,我希望下拉列表在星期一过滤掉,因为它已经被使用,但是在星期一被选中的星期一没有过滤掉。有没有人有一个如何实现这个目标的例子?
编辑:
$scope.schedule = {days: []};
从Zacks示例jsfiddle
更新答案 0 :(得分:2)
*已更新问题编辑*
这里每次选择一个选项时,都会调用updateAvailability()
<div ng-repeat="schedDay in schedule.days">
<select ng-model="schedDay.day" ng-change="updateAvailability()">
<option ng-repeat="day in days|orderBy:value" ng-disabled="!day.selectable" value="{{day.day}}">{{day.display}}</option>
</select>
</div>
通过并检查它是否已在其他地方使用过。
$scope.updateAvailability = function() {
var used = $scope.schedule.days.map(function(day) {
return parseInt(day.day || '-1');
});
angular.forEach($scope.days, function(day) {
day.selectable = used.indexOf(day.day) === -1 ? true : false;
});
}
查看演示JSFiddle