筛选已选择的选项

时间:2014-03-01 18:26:05

标签: angularjs angularjs-directive

我有一个带有ng-repeat的表单,用于加载用户添加的一组计划天数。假设用户已将第一天添加到集合中,并从下拉列表中选择星期一。当用户在集合中添加第二天时,我希望下拉列表在星期一过滤掉,因为它已经被使用,但是在星期一被选中的星期一没有过滤掉。有没有人有一个如何实现这个目标的例子?

编辑:

$scope.schedule = {days: []};

从Zacks示例jsfiddle

更新

1 个答案:

答案 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