angularjs - 使用angular js从选择中动态过滤掉值

标签 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">

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

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

最佳答案

在 Controller 中创建辅助方法:

$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 .也有没有 Controller 功能的纯模板方案:
ng-options="c.code for c in obj.codes | filter: '!' + selectedCode.code"

关于angularjs - 使用angular js从选择中动态过滤掉值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27763164/

相关文章:

javascript - 从 $resource.get Promise 中提取 JSON 对象

angularjs - 在 angular.js 中点击按钮可以在表格中添加行吗?

angularjs - 使用 AngularJS 限制字符串的长度

javascript - AngularJs,过滤不区分大小写

javascript - 在 AngularJs 中使用两种过滤器过滤一些数据但不起作用

javascript - ng-show 不更新 DOM 元素

javascript - 为什么我的 onclick 不起作用?

angularjs - 提交时重置表单

angularjs - 在 html 属性中使用 angularjs 过滤器

javascript - 根据正在过滤的值更改字体颜色angularjs