javascript - 通过 Angular 中的一组复选框控制显示的项目

标签 javascript angularjs

我有一个映射到复选框的标签列表。在同一个 Controller 中,有一个包含其中一些标签的项目列表。带有选中标签的项目应该是可见的。

Here is a plunkr使用代码设置。我想不通的是如何通过事件(选中)标签过滤 $scope.items。我尝试了几种不同的方法,但对 Angular 非常陌生,我需要朝正确的方向插入。我想 $scope.items 应该观察 $scope.tags 并以某种方式过滤每个标签的 active 属性。

最佳答案

查看 Creating Custom Filters .

在您的模块中定义一个自定义过滤器:

angular
  .module('myApp', [])
  .filter('withActiveTags', ActiveTagsFilter)
  .controller('TestController', TestController);

function ActiveTagsFilter() {
  return function (items, tags) {
    var filteredItems = [];
    angular.forEach(items, function (item) {
      if (/* tags contains an active tag that's in item.tags */) {
        filteredItems.push(item);
      }
    });
    return filteredItems;
  };
}

function TestController() {
  // controller stuff
}

然后在你的 View 中写这样的东西:

<ul>
  <li ng-repeat="item in items | withActiveTags:tags">{{ item.name }}</li>
</ul>

现在只需找出进行过滤的最佳方法,一切就绪。这是一个 plunker示例减去过滤。我确实创建了一个“样本过滤器”来证明该过滤器确实有效。

关于javascript - 通过 Angular 中的一组复选框控制显示的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25023583/

相关文章:

javascript - Res.render() 不渲染

javascript - Firefox sdk - 内容脚本无法访问 self.port

javascript - 如何从 2 级指令访问 Controller 范围

javascript - 使用 AngularJS 添加两个十进制数

javascript - 在 View 内调用另一个 Controller - Angular

javascript - jQuery,单击时选择(任何所有 *)元素

javascript - 如何在HTML表单上实时显示错误? (包括 JavaScript)

javascript - 书架JS : "this.hasOne" is not a function

javascript - 使用 angularjs 单击上一个和下一个按钮更改项目列表的事件状态

angularjs - return 语句后无法访问代码 Angular Material 在 index.html 中链接时失败