Unten ist meine Ansicht und Modell. Jedes Mal, wenn ich einen frischen serverRequestData
Daten für jeden Aufruf von initiateTest
Daten vorbereitet und übergebe es an save
Methode.Unerwartete Verhalten mit speichern Methode
Also, mein Server Anruf sollte mit Daten in serverRequestData
vorliegen. Es passiert richtig für den ersten Aufruf von initiateTest
, aber ab dem zweiten Mal sehe ich, dass die Antwort des vorherigen Serveraufrufs übergeben wird.
Das sieht für mich wirklich komisch aus, denn ich bereite mich eindeutig auf das neue initiateTest
vor.
Was mache ich etwas falsch, das einige interne Sache von backbone.js schraubt?
Ausblick:
define(['jquery', 'underscore', 'backbone', 'models/adhocmodel', 'models/resultmodel',
'text!templates/adhoc/adhocTemplate.html'], function($, _, Backbone,
adhocModel, resultModel, adhocTemplate) {
var adhocHistoryView = Backbone.View.extend({
resultmod : new resultModel(),
model : new adhocModel(),
el : $("#container"),
events : {
"click #test" : "initiateTest"
},
initiateTest : function() {
var serverRequestData = {"myid":"AAA",
"fname":"Wade",
"lname": "Wade",
"telephoneNumber":telNum,
"testMode":"Initial" };
console.log(serverRequestData);
var that = this;
this.model.save(serverRequestData, {
url: "forms/serviceDiagnostic/startTest",
type: "POST",
contentType: "application/json",
success : function(model, response) {
that.model.adhocCommon.hasTestResultArrived = true;
that.model.testResults = response;
that.render();
$('#container').trigger("create");
},
error : function(model, response) {
console.log("####### Error recieved ....");
}
});
},
initialize : function() {
},
render : function() {
console.log(this.model);
//this.$el.html(adhocTemplate);
var data = {
model:this.model,
_:_
};
var compiledTemplate = _.template(adhocTemplate, data);
this.$el.html(null);
this.$el.html(compiledTemplate);
return this;
}
});
return adhocHistoryView;
});
Modell:
define([ 'backbone' ], function(Backbone) {
var adhocModel = Backbone.Model.extend({
initialize : function() {
},
poolHandler : null,
poolCounter : 0,
adhocCommon : {
hasTestResultArrived : false
},
testResults : {}
});
return adhocModel;
});
Wenn du '[...] ab dem zweiten Mal sagst, sehe ich, dass die Antwort des vorherigen Serveraufrufs bestanden ist ', was meinst du mit' bestanden'? Übergeben an _ was_? –
@ try-catch-finally Ab dem zweiten Mal ist das Konsolenprotokoll korrekt, wenn Daten, die wirklich an den Server übergeben werden, falsch sind. Ich kann in der Registerkarte "Netzwerk" des Browsers und auch auf Serverseite sehen, dass es nicht die gleichen Daten sind, die gedruckt werden, aber es ist die Antwort des Servers der letzten Anfrage. – hagrawal
'that.model.testResults = Antwort' ..? Die Antwort wird automatisch mit den Attributen des Modells nach Backbone zusammengeführt. Alle Ihre Modelleigenschaften sind Attribut-Hashs außerhalb von Modellen. Ich glaube, du hast missverstanden, wie das Backbone funktioniert. Wenn wir solche Dinge manuell erledigen müssen, dann brauchen wir kein Backbone ... wir können das auf die alte Weise tun ... –