经验:新手
我已经像这样初始化函数
initialize: function(){
this.listenTo(this.model, "change", this.asyncRender);
}
我想定期听取更改,例如每5秒
我想要这样的东西
setTimeout(function(){
this.listenTo(this.model, "change", this.asyncRender);
}, 5000);
怎么做?
更新
抛出错误updateValues not defined
initialize: function(){
this.listenTo(this.model, "change", this.asyncRender);
setInterval(function(){
this.listenTo(this.model, "change", this.updateValues);
console.log("3 seconds");
},3000)
},
这不是抛出错误
initialize: function(){
this.listenTo(this.model, "change", this.asyncRender);
this.listenTo(this.model, "change", this.updateValues);
},
答案 0 :(得分:1)
您不必定期听。您只需在初始化中注册一次。如果模型中有任何变化,将调用this.asyncRender。
此处更改表示设置或删除或修改的任何属性。
尝试拨打
this.model.set("title", "A Scandal in Bohemia");
并看到this.asyncRender被调用。
修改强> 如果要每5分钟手动轮询一次,则可以检查this.model.changed属性。但这不可取。
http://backbonejs.org/#Model-changed
initialize: function() {
var self = this;
window.setInterval(function() {
if (self.model.changed) {
// Do your stuff
// this.asyncRender();
}
}, 5000);
}
答案 1 :(得分:1)
然后你不必注册model.change事件......
只做
setTimeout(this.asyncRender, 5000);