Jestem bardzo zdezorientowany przy użyciu metody pobierania modelu backbone.js. Patrz poniższy przykład
szkieletową routera:jak działa metoda pobierania modelu backbone.js
profile: function(id) {
var model = new Account({id:id});
console.log("<---------profile router-------->");
this.changeView(new ProfileView({model:model}));
model.fetch();
}
pierwszy krok, konto model zostanie instancja, model konto wygląda tak.
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;
});
urlObiekt własności dla tego, co to jest? Po utworzeniu obiektu modelu, widok profilu będzie renderowany za pomocą tego this.changeView (new ProfileView ({model: model}));, funkcja changeview wygląda następująco.
changeView: function(view) {
if (null != this.currentView) {
this.currentView.undelegateEvents();
}
this.currentView = view;
this.currentView.render();
},
po renderowanie widoku, informacje o profilu będzie jeszcze wyświetlany, ale po model.fetch(); wykonanie instrukcji, dane z modelu będą wyświetlane, dlaczego? Naprawdę nie wiem, jak działa, próbuję się dowiedzieć, ale nie mam szans.
pierwsze dzięki za odpowiedź, jest to bardzo miły opis. mam więcej pytań, po fetch() uruchomił zdarzenie "synchronizacji", widok będzie renderować automatycznie? sugestie, które mi dajesz, możesz zrobić kilka przykładów, ponieważ jestem całkiem nowy w backbonejs i javascript, znam ten język dobrze, ale niezbyt dobrze. –
adres URL zostanie zastąpiony prawą? W związku z tym var base = _.result (this, 'urlRoot') || _.result (this.collection, 'url') || urlError() ;? –
W przypadku pierwszego pytania, żadne zdarzenie synchronizacji nie spowoduje automatycznego renderowania widoku. Jeśli chcesz włączyć to, dodaj: "view.on (" sync ", this.render, this);" –