0

是否可以对过滤器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过滤器中的额外结果是否有任何选项?我可以以某种方式缓存它们,或者欺骗角度认为它们是相同的吗?

4

0 回答 0