Question

J'ai quelque chose comme ça:

Epic = Ember.Object.extend({
    children:[],
    children_filtered: function(){        
        return this.get("children").filterProperty("archived",false);
    }.property("children"),
    init: function() {
      this._super();
      this.set("children", Ember.ArrayController.create({content:[]}) );
      this.set("stories",  Ember.ArrayController.create({content:[]}) );
    },
});

Remarquez la propriété calculée de Children_filtered.

Si j'utilise des enfants_filants en vue ...

{{#each content.children_filtered }}
  hi
{{/each}}

Mon application est suspendue avec CPU @ 100%

Des idées que je fais de mal? Existe-t-il un meilleur modèle à suivre pour un objet qui a une liste d'éléments plus une liste d'éléments filtrés?

Était-ce utile?

La solution

Votre problème est que vous avez besoin que la propriété calculée soit définie comme cacheable. Sinon, sa valeur est recalculée à chaque itération #each. Il y a eu une discussion sur si cacheable devrait être la valeur par défaut pour toutes les propriétés calculées.

children_filtered: function(){        
  return this.get("children").filterProperty("archived",false);
}.property("children").cacheable()

Voici un exemple JSFiddle: http://jsfiddle.net/ebryn/9zksy/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top