Wenn ich den Abrufvorgang für ein Modell durchführe, kann ich sehen, dass die API die gewünschten Daten im JSON-Format zurückgibt. Die Konsolenprotokollierung des Modells zeigt die neuen Daten in einem "geänderten" Objekt an.Backbone-Fetch-Modell, dann Render-Ansicht
Vor und nach fetch:
Object {
cid: "c1",
attributes: Object,
_changing: false,
_previousAttributes: Object,
changed: Object,
id: undefined,
_pending: false
}
Object {
cid: "c1",
attributes: Object,
_changing: false,
_previousAttributes: Object,
changed: Object[1],
id: undefined,
_pending: false
}
Die Daten offensichtlich wird, abgerufen, und es ist im Modell vorhanden sind. Beim Rendern werden jedoch die Standardwerte angezeigt.
App.Models.Document = Backbone.Model.extend({
defaults: {
id: '',
owner: 0,
created: '',
lastupdate: '',
content: 'Default document content'
},
url: '/api/'
});
App.Views.DocumentView = Backbone.View.extend({
tagName: 'textarea',
className: 'editor',
template: App.Template('editortemplate'),
initialize: function() {
// As proposed in so many similar questions
this.listenTo(this.model, "change", this.render);
},
render: function() {
this.$el.html(this.template(this.model.toJSON()));
$(".app-content").html(this.$el);
return this;
}
});
a = new App.Models.Document();
a.fetch();
b = new App.Views.DocumentView({ model: a });
b.render();
Wie aktualisiere ich die Ansicht ordnungsgemäß mit den neuen Daten?
Wenn ich die Standardwerte aus dem Modell entferne, ist 'Inhalt' nicht definiert.
Es ist seltsam, dass 'geändert: Object' Änderungen an' geändert: Object [1], '. Wie ist die Struktur der Daten, die von der API zurückgegeben werden? BTW ID ist ein spezielles Attribut, das vom Backbone verwendet wird. –
die zurückgegebenen Daten ist ein json Objekt [{ "id": "1", "Besitzer": "1", "erstellt": "2016.04.30 21.57.23" " lastupdate ": null, " content ":" Erfolgreiches API-Fetch " }] – hesonline
Das bedeutet, dass Sie entweder' parse() 'implementieren müssen, um die Antwort zu verarbeiten, bevor Backbone sie auf die Modellattribute setzt oder abholen muss diese REST-Ressource aus einer ['Collection'] (http://backbonejs.org/#Collection). –