Comment faire une propriété calculée et filtrée?
-
28-10-2019 - |
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?
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