以下は私のビューとモデルです。私が毎回initiateTest
の呼び出し毎に新鮮なserverRequestData
データを準備し、それをsave
メソッドに渡すときはっきりと毎回。保存メソッドでの予期しない動作
したがって、私のサーバーコールは、serverRequestData
に存在するデータで起こるはずです。 initiateTest
の最初の呼び出しで正しく発生しますが、2回目以降は以前のサーバー呼び出しの応答が渡されます。
これは毎回新鮮な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;
});
「[...]を2回目以降に言うと、以前のサーバコールの応答が受け継がれているのが分かります」と、渡されたとはどういう意味ですか? _what_に合格? –
@ try-catch-finally 2回目以降は、実際にサーバーに渡されたデータが間違っている場合は、コンソールログが正しくなります。私はブラウザの "ネットワーク"タブで見ることができますまた、サーバー側では、それは印刷されている同じデータではないが、それは最後の要求のサーバーの応答です。 – hagrawal
'that.model.testResults = response' ..?レスポンスは、モデルの属性とバックボーンによって自動的にマージされます。すべてのモデルプロパティは、モデルの属性ハッシュの外にあります。私は、あなたがバックボーンの仕組みを誤解していると思います。これらの手作りのようなものを手作業で処理しなければならない場合、バックボーンの必要はありません...古いjqueryの方法でこれを行うことができます... –