Ниже приводится моя точка зрения и модель. Ясно каждый раз, когда я готовлю свежие данные serverRequestData
для каждого вызова initiateTest
и передавая его методу save
.Неожиданное поведение с сохранением метода
Итак, мой серверный вызов должен произойти с данными, содержащимися в serverRequestData
. Это происходит правильно для первого вызова initiateTest
, но со второго раза я вижу, что передается ответ предыдущего вызова сервера.
Это выглядит действительно странно для меня, потому что я готовлю свежие initiateTest
каждый раз.
Что я делаю что-то не так, что привинчивает некоторые внутренние вещи backbone.js?
Вид:
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;
});
Модель:
define([ 'backbone' ], function(Backbone) {
var adhocModel = Backbone.Model.extend({
initialize : function() {
},
poolHandler : null,
poolCounter : 0,
adhocCommon : {
hasTestResultArrived : false
},
testResults : {}
});
return adhocModel;
});
Когда вы говорите '[...] со второго раза, я вижу, что ответ предыдущего вызова сервера передается', что вы имеете в виду с 'pass'? Передано кому-то? –
@ try-catch-finally С второго раза журнал консоли корректен, когда данные, которые действительно переданы серверу, ошибочны. Я вижу на вкладке «сеть» браузера, а также на стороне сервера, что это не те же данные, которые печатаются, но это ответ сервера последнего запроса. – hagrawal
'that.model.testResults = response' ..? Ответ будет автоматически слит с атрибутами моделей по магистрали. Все ваши свойства модели являются атрибутами атрибутов внешних моделей. Я думаю, вы неправильно поняли, как работает позвоночник. Если мы должны обрабатывать такие вещи вручную, тогда нет необходимости в магистрали ... мы можем сделать это старым способом jquery ... –