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

时间:2015-04-21 11:53:57

标签: angularjs filter

我的新过滤器无法接收数据:

这里是我的错误日志:

enter image description here

控制器代码:

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的数据!?

1 个答案:

答案 0 :(得分:0)

这是因为您没有在$ 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;
    };
    });