在 Backbone.js 中的模型中使用 setTimeout
Using setTimeout inside Model in Backbone.js
我是骨干网的新手,我正在尝试通过制作一些示例应用程序来学习它。一个是足球经理游戏。我正在尝试制作一个"匹配"模型,该模型具有一个名为"start()"的函数,理论上它将启动一个计数高达 90 的计时器。这是我的模型:
var Match = Backbone.Model.extend({
defaults: function(){
return {
name: "Match One",
};
},
start: function() {
console.log("match started");
this.incrementMinute();
},
incrementMinute: function() {
var min = this;
setTimeout(function(){
min.set('minute', ++min.minute);
if(min.minute % 10 === 0)
min.updateStatus();
min.incrementMinute();
}, 3000);
},
updateStatus: function() {
this.set("detail", "Minute is now: "+this.minute);
},
minute: 0,
detail: "Match is about the kick-off..."
});
我有一个"更改"侦听器附加到minute
和detail
.当分钟或细节更改时,我的视图已更新,这工作正常。但是,由于某种原因,当我到达第 15 分钟标记时,我的浏览器选项卡崩溃了。整个选项卡变得无响应,最终崩溃。我也尝试使用setInterval
,但问题仍然存在。
实时版本可以在这里找到:
http://bit.ly/188TtWa
问题
- 为什么会这样? 我
- 该如何修复它,或者我应该怎么做?
我认为问题出在MatchView的渲染方法上。
每次调用时,它都会绑定事件侦听器。因此,仅在视图更新后,您就会有更多的事件处理程序,这些处理程序都再次调用 render 方法。
仅尝试绑定事件一次,而不是每次都尝试绑定事件。另外,我认为您也只能调用一次_.template(..)。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- setInteval vs setTimeout
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- setTimeout可以与闭包内的函数一起使用吗
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- Javascript setTimeout for an array
- 将不在模型中的数据返回到mvc控制器
- 如何在视图模型contet更新更新上调用Jquery函数
- 刷新后,setTimeout将工作或不工作
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 我应该如何检查主干.主干.模型更改时查看
- Ext.js从json构建模型关系的问题
- 显示模块模式在Knockout中设置模型的新实例
- 在 Backbone.js 中的模型中使用 setTimeout
- SetTimeout在emberjs模型中
- 模型未随setTimeout中的ng显示而更改