Mám chrbtovú kosť View
ktoré chcem vykresliť až potom, ako sa stanú dve rôzne udalosti. Tieto dve udalosti sú dve rôzne Collections
osídlené zo servera (toto má vyplniť dva rozbaľovacie zoznamy).
Moji dvaja Collections
sú cFilterFields
a cFilterOperators
a obaja majú zvyk .populate()
metóda .fetch()
a požiare populated
diania.
To je to, čo mám:
var MyView = Backbone.View.extend({
tagName: "div",
initialize: function(){
_.bindAll(this,"render");
this.fields = new cFilterFields();
this.operators = new cFilterOperators();
this.fields.populate();
this.operators.populate();
this.listenTo(this.fields,"populated",function(){
// ...
});
this.listenTo(this.operators,"populated",function(){
// ...
});
},
events: {},
render: function(){
// ...
return this;
}
});
Aký je najlepší spôsob, ako to vykresliť View
kedy oba Collection
udalosti sa spustili ...?
odpovede:
2 pre odpoveď č. 1Mať zbierky “ populate
metódy vrátia sľuby a potom ich použijú jQuery.when
Vaša inicializácia by potom mala vyzerať asi takto
$.when(fields.populate(), operators.populate())
.done(_.bind(function() {
this.render();
}, this));
Toto riešenie predpokladá JQuery a podčiarkovník, pretože obe sú závislosťami na chrbtici.
0 pre odpoveď č. 2
Práve ste to urobili, skutočne jednoduché, stačí urobiť:
this.listenTo(this.fields && this.operators,"populated",function(){
this.render();
});
UPDATE
Nepoužívajte to, pozrite si komentáre nižšie, akceptujem správnu odpoveď.