DOM とやり取りするために、 tastypieアダプターと jquery を備えたバックボーンを使用しています。バックボーンで理解できないものを見つけました。この質問のコードを単純化しようとしました。
ここに私のapp.jsがあります:
$(document).ready(function() {
Point = Backbone.Model.extend({
defaults:{
lat:0,
lng:0
},
urlRoot: '/api/v1/point' ,
initialize: function(attributes){
var that = this;
$('#b1').bind('click',function() {
that.set('lat',that.get('lat')+1);
});
$('#b2').bind('click',function() {
that.save();
});
$('#b3').bind('click',function() {
console.log(that.get('lat'));
});
}
});
point = new Point ();
//****
$('#b1').click();
$('#b2').click();
$('#b3').click(); // >> 1
$('#b1').click();
$('#b2').click();
$('#b3').click(); // >> 2
//****
});
そして私のhtml:
<script src="/static/js/jquery.js"></script>
<script src="/static/js/backbone.js"></script>
<script src="/static/js/backbone-tastypie.js"></script>
<script src="/static/js/app.js"></script>
<button id="b1">b1</button>
<button id="b2">b2</button>
<button id="b3">b3</button>
ご覧のとおり、コード内のボタンのクリックを呼び出しており、コンソールは期待どおりに「1」と「2」を記録しています。
この問題は、星 (// * ) の間のコードを削除し、これらのボタン 'b1'、'b2'、'b3'、'b1'、'b2'、'b3' をブラウザーで手動で押して、'1' を取得したときに発生します。およびコンソールで「1」。
サーバーからの応答を 1 秒間待ってコンソールで確認しますが、アプリの動作は同じです:「1」、「2」は星付きのコードで、「1」、「1」はボタンを押した状態です.
なぜなのかご存知ですか?