Backbone.js ile başlıyorum ve ilk örnek uygulama alışveriş listesini oluşturmaya çalışıyorum.Backbone.js - getirme yöntemi sıfırlama olayını tetiklemiyor
Sorun, öğelerin koleksiyonunu aldığımda, sıfırlama olayının muhtemelen tetiklenmediğidir, bu nedenle render yöntemim çağrılmıyor.
Modeli:
Item = Backbone.Model.extend({
urlRoot : '/api/items',
defaults : {
id : null,
title : null,
quantity : 0,
quantityType : null,
enabled : true
}
});
Koleksiyonu:
ShoppingList = Backbone.Collection.extend({
model : Item,
url : '/api/items'
});
Liste görünümü:
ShoppingListView = Backbone.View.extend({
el : jQuery('#shopping-list'),
initialize : function() {
this.listenTo(this.model, 'reset', this.render);
},
render : function (event) {
// console.log('THIS IS NEVER EXECUTED');
var self = this;
_.each(this.model.models, function (item) {
var itemView = new ShoppingListItemView({
model : item
});
jQuery(self.el).append(itemView.render().el);
});
return this;
}
});
Liste öğesi görünümü:
ShoppingListItemView = Backbone.View.extend({
tagName : 'li',
template : _.template(jQuery('#shopping-list-item').html()), // set template for item
render : function (event) {
jQuery(this.el).html(this.template(this.model.toJSON()));
return this;
}
});
Yönlendirici: sayfa yüklemesi sonrasında
var app = new AppRouter();
Backbone.history.start();
, kalemlerin toplanması sunucusundan doğru getirilen ancak render:
var AppRouter = Backbone.Router.extend({
routes : {
'' : 'show'
},
show : function() {
this.shoppingList = new ShoppingList();
this.shoppingListView = new ShoppingListView({
model : this.shoppingList
});
this.shoppingList.fetch(); // fetch collection from server
}
});
Uygulama açılışı AlışverişListView yöntemi asla denir. Ne yapıyorum yanlış? , Backbone Docs
Yani:
"sunucudan modeli veri döner, bu ayarlı kullanır zaman geçmesi sürece (akıllı) getirilen modeller birleştirme {gerçek sıfırlama:}"
Onun desenine katılmasanız bile, burada yanlış bir şey yok. Onun * modeli * bir koleksiyon, tamam, ama onun görüşü onu dinler. Nereye gittiğini anlamıyorum. – Loamhoof
@Loamhoof hm, iyi yakalama.Cevabımı güncelledim –
Çok teşekkür ederim! '{reset: true}', benim sorunumun anahtarıydı. – chr1s