是否可以过滤到mutate
过滤器的结果?
假设我想编写一个实际上会在上一个列表中添加内容的过滤器
module.filter('family',function(){
return function(data,expand){
var people = [];
data.forEach(function(child){
people.push(child);
// here add something extra
if (expand){
// the problem here I just want to demonstrate is that I have to
// generate the father and mother on the fly.
people.push(angular.$copy(child.father,{}));
people.push(angular.$copy(child.mother,{}));
}
});
return people;
}
});
我接下来要做的是:
<ul>
<li ng-repeat="person in children|faimly:true">
{{person.name}}
</li>
</ul>
这样做是否安全?我担心这会导致多个$digest()
或$apply()
修改
这里可能存在的主要问题是,我必须每隔时间返回同一个对象(因为$watch
会比较===
,而afaik至少有2 $digest
继续第一次渲染)。因此我不能generate
过滤器中的对象 - 会导致无限循环。我是对的吗?
过滤器中有generate
额外结果的选项吗?我可以以某种方式缓存它们,或者通过角度来认为它们是相同的吗?