Domanda

Ho qualcosa di simile:

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:[]}) );
    },
});

Nota la proprietà calcolata per bambini_filterate.

Se uso Children_filtered in una vista ...

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

La mia applicazione è appesa alla CPU al 100%

Qualche idea su cosa sto facendo di sbagliato? Esiste un modello migliore da seguire per un oggetto che ha un elenco di elementi più un elenco di elementi filtrati?

È stato utile?

Soluzione

Il tuo problema è che hai bisogno che la proprietà calcolata sia impostata come cacheable. Altrimenti, il suo valore è ricompenso su ogni iterazione del #each. Si è discusso se cacheable dovrebbe essere l'impostazione predefinita per tutte le proprietà calcolate.

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

Ecco un esempio JSFiddle: http://jsfiddle.net/ebryn/9zksy/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top