Backbone.js model getirme yöntemini kullanma konusunda çok kafa karıştırıyorum.backbone.js modeli getirme yöntemi nasıl çalışır?
profile: function(id) {
var model = new Account({id:id});
console.log("<---------profile router-------->");
this.changeView(new ProfileView({model:model}));
model.fetch();
}
ilk adım, model hesabı örneği olacak, hesap modeli şöyle görünür: Aşağıdaki örnek
omurga yönlendirici bakın.
define(['models/StatusCollection'], function(StatusCollection) {
var Account = Backbone.Model.extend({
urlRoot: '/accounts',
initialize: function() {
this.status = new StatusCollection();
this.status.url = '/accounts/' + this.id + '/status';
this.activity = new StatusCollection();
this.activity.url = '/accounts/' + this.id + '/activity';
}
});
return Account;
});
urlRoot özelliği nedir? Model nesnesi oluşturulduktan sonra profil görünümü bu this.changeView ile işlenecektir (yeni ProfileView ({model: model}));, changeview işlevi böyle görünüyor.
changeView: function(view) {
if (null != this.currentView) {
this.currentView.undelegateEvents();
}
this.currentView = view;
this.currentView.render();
},
görünümü oluşturur sonra, profil bilgileri henüz göstermez, ancak model.fetch sonra(); deyimi çalıştır, modelden veriler görüntülenecek, neden? Getirmenin nasıl çalıştığını gerçekten bilmiyorum, bulmaya çalışıyorum ama şans yok.
İlk cevap için teşekkürler, çok güzel bir açıklama. Fetch() 'sync' olayını tetikledikten sonra, görünüm otomatik olarak oluşturulacak mı? Bana verdiğiniz önerileri, bazı örnekler yapabilir misiniz, çünkü ben backbonejs ve javascript'te oldukça yeni, bu dili iyi biliyorum ama çok iyi değil. –
urlroot geçersiz kılınır mı? Bu var taban Cuzu = _.result (bu 'urlRoot') || _.result (this.collection, 'url') || UrlError() ;? –
İlk sorunuz için, senkronizasyon etkinliği görünümü otomatik olarak oluşturmaz. Bunu etkinleştirmek isterseniz, aşağıdakini ekleyin: "view.on ('sync', this.render, this);" –