根据已选择的值过滤下一个下拉列表值

时间:2016-12-23 18:46:42

标签: javascript angularjs

我有四个选项的下拉列表。我选择第一个选项为'John(1)'并添加一行。现在下一个下拉列表应该只显示下拉列表中的三个选项,即它应该排除前一个下拉选择值的值'John(1)'。在下一个添加行中,它应排除前两个选定的下拉列值。这可以实现吗?先感谢您。下面是小提琴。

Decorator pattern

https://jsfiddle.net/Lt7aP/3787/

1 个答案:

答案 0 :(得分:0)

为ng-repeat添加一个过滤器,以避免已经添加的对象:

$scope.notSelected = function(item){
        for (var i in $scope.viewTemplateRow){
            if ($scope.viewTemplateRow[i].id==item.id)
            return false
      }
      return true;
    }

您的HTML将如下所示:

<option ng-repeat="option in viewTemplateData | filter: notSelected" value="{{option.id}}" ng-selected="{{option.id == mapping.id}}" ng-model="viewTemplateData">{{option.name}} ( {{option.id}} )</option>

注意:请考虑为选择项的ng-options替换ng-repeat指令。