首页 > 解决方案 > TypeError:无法读取未定义的属性“$filter”

问题描述

当用户单击链接时,我在 UI 上显示 json 对象,下面是它显示的异常

TypeError: Cannot read property '$filter' of undefined

演示:http ://plnkr.co/edit/5NOBQ3rzE3EFwTnuLbXG?p=preview

示例js代码:

app.controller('BaseCtrl', ['$scope','$http','$filter', function($scope,$http,$filter) {

$scope.myList = [{"sId":100,"spread":"21x","owner":"Michael","labels":"deffered incomplete"},
{"sId":101,"spread":"34","owner":"Steve","labels":"complete"},
{"sId":102,"spread":"90s","owner":"John","labels":"tested"},
{"sId":103,"spread":"332","owner":"Dex","labels":"complete deffered"}  
];

//$scope.myListObj;
$scope.showList = function(myListObj){
  console.log("myListObj " + JSON.stringify(myListObj));
  //  $scope.defferedList = $scope.myListObj.filter(function( obj ) {
    $scope.defferedList =  JSON.stringify($scope.myListObj).filter(function( obj ) {
      console.log(obj.labels.includes('deffered'));
      return obj.labels.includes('deffered');
}); 
console.log("defferedList :: " +  $scope.defferedList);
}
}]); 

我已包含'$http','$filter'在控制器中。任何输入?

标签: htmlangularjsangularjs-filter

解决方案


你的问题不在于 $filter 我看到的错误是

无法读取未定义的属性“过滤器”

这是指javascript方法过滤器而不是AngularJS的'$filter'。Filter 是一种可以在数组上调用的 javascript 方法。似乎也不需要在这里执行 JSON.stringify 。试试这个

$scope.defferedList =  $scope.myListObj.filter(function( obj ) {
    console.log(obj.labels.includes('deffered'));
    return obj.labels.includes('deffered');
});

推荐阅读