我正在使用带有tastepie适配器和jquery 的主干与DOM 交互。我在骨干中发现了一些我无法理解的东西。我试图简化这个问题的代码。
这是我的 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',按下按钮.
你知道为什么吗?