我的自定义angularJS过滤器中有对象数组。对象数组具有具有boolen true和false属性的功能键。我得到具有所有特征真实值的对象。现在,我想重新整理精选的真实对象数据。但是不幸的是,它给了我无限的错误。
我的代码:
app.filter('sortFilter', ['$filter', function ($filter) {
return function (items, sort) {
var onlyFeatured = [];
angular.forEach(items, function (item, key) {
if(item['featured'] == true) {
onlyFeatured.push(items[key]);
}
});
onlyFeatured.sort(function() { return 0.5 - Math.random();
});
return onlyFeatured;
};
});
请帮助摆脱摘要错误。
答案 0 :(得分:1)
根本原因:您的过滤器在每个摘要周期返回新的数组。然后angularjs对每个观察值执行脏检查。由于获取新数组,因此它将再次运行摘要。并得到另一个数组。而且...这发生了some_limit_typically_10次,然后失败了。
因此不可能将randomizer实现为angularjs过滤器。
相反,您需要将其洗净一次,然后将其插入到$scope
或控制器的this
变量中
[UPD]我错了,就是.sort
不会使原始数组变异。确实如此,对于错误消息,我们深表歉意。但是无论如何,这无济于事。