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

如何在AngularJs中将$scope值传递给自定义过滤器?,angularjs,angular-filters,Angularjs,Angular Filters,我在下面展示了一个阵列 $scope.selectionCat=['1','3','4'] 在HTML中,我像打电话一样 自定义过滤器 .filter('filterForCat', function () { return function (item, scope) { return (scope.selectionCat.indexOf(item.category_id.id) !== -1); }; }) 当我尝试读取“scope.selectionCat”值时,会出

我在下面展示了一个阵列

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

在HTML中,我像打电话一样

自定义过滤器

.filter('filterForCat', function () {
  return function (item, scope) {
    return (scope.selectionCat.indexOf(item.category_id.id) !== -1);
  };
})
当我尝试读取“scope.selectionCat”值时,会出现类似“无法读取未定义的属性“id”的错误”


我能得到任何帮助来解决这个问题吗?

我猜你想过滤
范围中包含id的项目。正如@JB Nizet评论的那样,你不应该将范围(此)传递给你可以但应该避免的过滤器,您必须返回筛选结果,而不仅仅是表达式的true/false

此外,您面临的错误将通过
Array.filter
解决,因为如果项中没有数据,则不会执行
Array.filter
的回调

在这里,您可以像下面这样编写过滤器

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

category\u id
未定义。您是否已验证它是否存在于<代码>项<代码>?是的,我已验证。。当我控制台时,它会得到一个对象数组..模板中没有
这个
。不要超过范围。通过selectionCat。