Ich bin sehr verwirrt über die Verwendung von Backbone.js Model Fetch-Methode. Siehe das folgende Beispiel
Backbone-Router:wie backbone.js Modell Fetch-Methode funktioniert
profile: function(id) {
var model = new Account({id:id});
console.log("<---------profile router-------->");
this.changeView(new ProfileView({model:model}));
model.fetch();
}
der erste Schritt wird das Modell Konto instanziert werden, das Kontenmodell sieht wie folgt aus.
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-Eigenschaft für was ist das? Nach dem Erstellen des Modellobjekts wird die Profilansicht mit dieser this.changeView gerendert (neues ProfileView ({model: model}));, sieht die changeview-Funktion so aus.
changeView: function(view) {
if (null != this.currentView) {
this.currentView.undelegateEvents();
}
this.currentView = view;
this.currentView.render();
},
nach Ansicht machen, werden Informationen über die Profile noch nicht angezeigt werden, aber nach model.fetch(); Anweisung ausführen, Daten vom Modell werden angezeigt, warum? Ich weiß wirklich nicht wie fetch funktioniert, ich versuche es herauszufinden, aber keine Chance.
ersten dank für die antwort, es ist eine sehr schöne beschreibung. Ich habe eine Frage mehr, nachdem fetch() das 'Sync' Ereignis ausgelöst hat, wird die Ansicht automatisch gerendert. die Vorschläge, die Sie mir geben, können Sie einige Beispiele, weil ich bin ziemlich neu in Backbonejs und Javascript Ich kenne diese Sprache gut, aber nicht sehr gut. –
die urlroot wird überschrieben werden richtig? Cuz von diesem var base = _.result (this, 'urlRoot') || _.result (this.collection, 'url') || urlError(); –
Für Ihre erste Frage, nein, das Synchronisierungsereignis wird die Ansicht nicht automatisch rendern. Wenn Sie dies aktivieren möchten, fügen Sie Folgendes hinzu: "view.on ('sync', this.render, this);" –