javascript - angularjs如何通过多个选择删除重复项

标签 javascript angularjs


一个关于 Angular JS 的问题。假设我有一个对象数组,例如:

items = [
{"id":1,"name":"AAA"},
{"id":2,"name":"BBB"},
{"id":3,"name":"CCC"},
{"id":4,"name":"DDD"}
]

现在我的 View 中有 2 或 3 个选择。

<select type="text" class="form-control form-control-small" 
ng-model="itemId" ng-options="item.id as item.name for item in items">
</select>

<select type="text" class="form-control form-control-small" 
ng-model="itemId" ng-options="item.id as item.name for item in items">
</select>

<select type="text" class="form-control form-control-small" 
ng-model="itemId" ng-options="item.id as item.name for item in items">
</select>

那么我如何确保我在第一个选择中拥有所有 4 个选项,在第二个选择中拥有 3 个选项(全部减去选择),在第三个选择中拥有两个选项(也全部减去选择)等等。 每当任何选择发生更改时,如何更新后续选择。
非常感谢您的想法。

最佳答案

您需要创建一个过滤器。
注意:我使用的是 ES5 过滤功能,除非您使用 shim,否则它不会在 IE8 上工作

yourModule.filter('exclude', function () {
    return function (items, exclude) {
        return items.filter(function (item) {
            return exclude.indexOf(item.id) === -1;
        });
    });
});

在你的标记中

<select type="text" class="form-control form-control-small" 
ng-model="itemId1" ng-options="item.id as item.name for item in items">
</select>

<select type="text" class="form-control form-control-small" 
ng-model="itemId2" ng-options="item.id as item.name for item in items | exclude:[itemId1]">
</select>

<select type="text" class="form-control form-control-small" 
ng-model="itemId3" ng-options="item.id as item.name for item in items | exclude:[itemId1, itemId2]">
</select>

如果您想在第一个或第二个选择发生更改时更新您的选择,请使用 ngChange 指令来重置或更改其他模型值。

关于javascript - angularjs如何通过多个选择删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603701/

相关文章:

c# - GridView 文本框值插入另一个文本框中

angularjs - 如何查看我们的本地存储数据存储在您系统的哪个位置?

javascript - 使用单个函数隐藏多个输入

javascript - 按 Angular.js 中的公共(public)对象属性过滤数组?

javascript - 滚动到顶部和底部的 HTML 列表步骤

javascript - 在创建 Angular 1 应用程序时,我应该牢记哪些 Angular 2 方面?

javascript - 在 React js 中使用 Reactstrap 从多个选择下拉列表中动态选择选项

javascript - npm install package-name 非常慢

javascript - 不运行 CSS 的成功动画教程

javascript - 在右键单击时隐藏带有 angularjs 的 html 部分