使用角度js从选择中动态过滤掉值

时间:2015-01-04 06:46:57

标签: angularjs angularjs-filter

我有一个选择我在哪里填充某些值,如下所示:

值为:

     $scope.obj = {codes: [
        {code: 1},
        {code: 2},
        {code: 3}
     ]};

现在我想动态过滤某些值而不对$ scope.obj值进行任何更改,即我不想显示{code:1}值。我在另一个$ scope变量中设置了这个值:

$ scope.selectedCode = {code:1};

所选代码中的任何值都不应显示在选择下拉列表中。我认为这可以使用angular js过滤器表达式来完成:

<select ng-options="c.code for c in obj.codes | filter:'c.code !== selectedCode .code'" ng-model="selected">

但上面显示的是一个空的下拉。

非常欢迎任何帮助/指导。谢谢。 :)

2 个答案:

答案 0 :(得分:7)

在控制器中创建辅助方法:

$scope.filterCodes = function(obj) {
    return obj.code !== $scope.selectedCode.code;
};

并将其用作自定义过滤器:

<select ng-options="c.code for c in obj.codes | filter:filterCodes" ng-model="selected"></select>

<强> UPD 即可。还有没有控制器功能的纯模板解决方案:

ng-options="c.code for c in obj.codes | filter: '!' + selectedCode.code"

答案 1 :(得分:0)

Tyr创建一个过滤的新对象。

<select ng-options="c.code for c in filteredobj = (obj.codes | filter:'code':'!'+ selectedCode.code)" ng-model="selected">