如何将$ scope值传递给AngularJs中的自定义过滤器?

时间:2017-05-11 06:25:47

标签: angularjs angular-filters

我在下面有一个数组显示,

$ scope.selectionCat = [' 1',' 3',' 4']

在HTML中调用

< div dir-paginate ="项目中的项目| filterForCat:这">

自定义过滤器

.filter('filterForCat', function () {
  return function (item, scope) {
    return (scope.selectionCat.indexOf(item.category_id.id) !== -1);
  };
})

当我试图阅读' scope.selectionCat'价值收到错误,如“无法读取属性' id'未定义'

我可以帮助解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

猜猜你想要过滤scope.selectionCat包含id的项目,如@JB Nizet所评论,你不应该将范围(this)传递给你可以但应该<的过滤器strong>避免以这种方式使用过滤器,您必须返回过滤结果,而不仅仅是表达式的真/假。

同样,您所面临的错误将由Array.filter解决,如果项目中没有数据,则Array.filter的回调将不会被执行。

这里你可以像下面那样编写过滤器

.filter('filterForCat', function () {
  return function (items, selectionVat) {
    return items.filter(function(item) {
      return selectionCat.indexOf(item.category_id.id) !== -1
    });
  };
})