AngularJS 自定义过滤器不接收数据

AngularJS custom filter don't receive data

我的新过滤器有问题,它没有收到数据:

这是我的错误日志:

控制器代码:

angular.module('reklaApp')
.controller('MainCtrl', function ($scope, $http, Reklas, Modal) {

$scope.newRekla = {};

Reklas.getAll()
  .success(function(data) {
    $scope.reklas = data;
  });

过滤代码:

angular.module('reklaApp')
.filter('dateFilter', function () {
return function (items) {
    var filtered = [];

    for (var i = 0; i < items.length; i++) {

        var item = items[i];

        filtered.push(item);

    }

    return filtered;
};
});

HTML代码:

    <tr ng-repeat="rekla in reklas | dateFilter">
      <td>{{rekla.dt | date: 'dd.MM.yyyy'}}</td>
      <td>{{rekla.order}}</td>
      <td>{{rekla.personal}}</td>
      <td>{{rekla.department}}</td>
      <td>{{rekla.xyz}}</td>
      <td>{{rekla.desc | limitTo: '50'}}</td>
      <td>{{rekla.costs}}</td>

我认为 "item" 变量没有从 ng-repeat 接收数据!?

这是因为您没有在 $scope 上创建它。因此,由于您的 getAll 函数需要一些时间,因此过滤器没有数据。您可以通过两种方式解决此问题:

通过首先初始化变量:

angular.module('reklaApp')
    .controller('MainCtrl', function ($scope, $http, Reklas, Modal) {

    $scope.newRekla = {};
    $scope.reklas = [];

    Reklas.getAll()
      .success(function(data) {
        $scope.reklas = data;
      });

或者更新您的过滤器:

angular.module('reklaApp')
    .filter('dateFilter', function () {
    return function (items) {
        if(!angular.isArray(items)){ return items }
        var filtered = [];

        for (var i = 0; i < items.length; i++) {

            var item = items[i];

            filtered.push(item);

        }

        return filtered;
    };
    });