我正在努力学习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)
我搜索并尝试过,但仍无法找到解决方案,所以我等了。
答案 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。它还支持反向功能。