angular app TypeError:无法读取属性' slice'未定义的

时间:2015-08-13 02:01:53

标签: angularjs slice

我正在努力学习angularjs。我使用过滤功能来订购一些这样的项目:

angular.module('reverseDirective', [])
.filter('reverse', function() {
    return function(items) {
        return items.slice().reverse();
    }
});

当我把它放到html文件

<div class="panel-body" ng-repeat="each in story.stories | reverse">
                    <p>{{ each.content }}</p>

控制台始终显示此错误:

TypeError: Cannot read property 'slice' of undefined
    at http:localhost:3000/app/directives/reverse.js:6:15
    at fn (eval at <anonymous> (http:localhost:3000/js/angular.min.js:212:83), <anonymous>:4:203)
    at Object.<anonymous> (http:localhost:3000/js/angular.min.js:117:376)
    at n.$get.n.$digest (http:localhost:3000/js/angular.min.js:132:124)
    at n.$get.n.$apply (http:localhost:3000/js/angular.min.js:135:269)
    at l (http:localhost:3000/js/angular.min.js:87:152)
    at F (http:localhost:3000/js/angular.min.js:91:187)
    at XMLHttpRequest.K.onload (http:localhost:3000/js/angular.min.js:92:220)

我搜索并尝试过,但仍无法找到解决方案,所以我等了。

2 个答案:

答案 0 :(得分:2)

您应该检查项目是否存在。这个解决方案应该适合你。

angular.module('reverseDirective', [])
       .filter('reverse', function() {
           return function(items) {
               if (!items) {
                   return;
               }
               return items.slice().reverse();
           }
       });

答案 1 :(得分:0)

为什么不使用过滤器顺序内置的角度。如果需要,您可以传递一个函数。查看文档http://docs.angularjs.org/api/ng.filter:orderBy。它还支持反向功能。