AngularJS'sort在过滤器中未定义

时间:2019-05-23 11:44:08

标签: angularjs

我创建了一个非常出色的AngularJS过滤器!!! 但是控制台有问题。在控制台中,尽管显示错误,但仍在工作。现在我要消除错误。

这是控制台错误:

TypeError: Cannot read property 'sort' of undefined
    at filter.js:14

在这里找到我的过滤器

app.filter('filterByName', function () {
    return function (item) {
        return item.sort((a,b) => a.name.localeCompare(b.name))
    };
  });

再次注意,过滤器工作正常,但仅在控制台中显示此错误,我对此错误表示关注。

这就是我在tempalate中使用此过滤器的方式:

 <tr ng-repeat="contact in contacts | filterByName track by $index ">

我听说错误显示是因为我没有配置js版本,但是我不知道这是什么以及如何做。

谁能告诉我如何摆脱这个问题?

可选:

这是我初始化联系人的地方。

$scope.getAllContact = function() {
    var data = $http.get("http://127.0.0.1:8000/api/v1/contact/")
    .then(function(response) {
      $scope.contacts = response.data;

    }, function(response) {

    });
  };

1 个答案:

答案 0 :(得分:1)

由于未定义商品,您收到该错误,您可以添加以下几行以防止该错误。

app.filter('filterByName', function () {
    return function (item) {
        if(item == undefined)
            item = []
        return item.sort((a,b) => a.name.localeCompare(b.name))
    };
});

您还可以在控制器中初始化$ scope.contacts = []来避免此问题。