Sono molto confuso sull'utilizzo del metodo di recupero del modello backbone.js. Vedere il seguente esempio
router dorsale:come funziona il metodo di recupero del modello backbone.js
profile: function(id) {
var model = new Account({id:id});
console.log("<---------profile router-------->");
this.changeView(new ProfileView({model:model}));
model.fetch();
}
il primo passo, sarà istanziato l'account del modello, il modello di conto si presenta così.
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;
});
proprietà urlRoot per cosa si tratta? Dopo la creazione dell'oggetto modello, la vista panoramica verrà visualizzata con questo this.changeView (nuovo ProfileView ({model: model}));, la funzione changeview appare così.
changeView: function(view) {
if (null != this.currentView) {
this.currentView.undelegateEvents();
}
this.currentView = view;
this.currentView.render();
},
dopo render vista, informazioni del profilo non visualizza ancora, ma dopo model.fetch(); L'istruzione viene eseguita, i dati dal modello verranno visualizzati, perché? Non so davvero come funziona, cerco di scoprirlo, ma nessuna possibilità.
prima grazie per la risposta, è una descrizione molto bella. ho qualche domanda in più, dopo che fetch() ha attivato l'evento 'sync', la vista verrà renderizzata automaticamente? i suggerimenti che mi dai, puoi fare alcuni esempi, perchè sono abbastanza nuovo in backbonejs e javascript, conosco bene quella lingua, ma non molto bene. –
l'urlroot sarà override giusto? Cuz di questa var base = _.result (this, 'urlRoot') || _.result (this.collection, 'url') || URLError() ;? –
Per la tua prima domanda, nessun evento di sincronizzazione non renderà automaticamente la vista. Se si desidera abilitare questo, aggiungere il seguente: "view.on ('sync', this.render, this);" –