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

Jyo*_*Pan 4 angularjs angularjs-filter

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

价值观是:

     $scope.obj = {codes: [
        {code: 1},
        {code: 2},
        {code: 3}
     ]};
Run Code Online (Sandbox Code Playgroud)

现在我想动态过滤某些值而不对$ 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">
Run Code Online (Sandbox Code Playgroud)

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

我们非常欢迎任何帮助/指导.谢谢.:)

dfs*_*fsq 7

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

$scope.filterCodes = function(obj) {
    return obj.code !== $scope.selectedCode.code;
};
Run Code Online (Sandbox Code Playgroud)

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

<select ng-options="c.code for c in obj.codes | filter:filterCodes" ng-model="selected"></select>
Run Code Online (Sandbox Code Playgroud)

UPD.还有没有控制器功能的纯模板解决方案:

ng-options="c.code for c in obj.codes | filter: '!' + selectedCode.code"
Run Code Online (Sandbox Code Playgroud)