我使用backbone.js,有一个没有集合的模型。 在视图中,我调用模型上的fetch方法,并带有一个回调函数来渲染视图。
this.user.fetch({success: function(d) { self.randomUserView.render() }})
当模型改变时,如何使视图自动更新?例如,我不想每次调用fetch时都指定上面的回调函数。我尝试在初始化时将视图绑定到许多模型事件,但这并没有起作用。
我使用backbone.js,有一个没有集合的模型。 在视图中,我调用模型上的fetch方法,并带有一个回调函数来渲染视图。
this.user.fetch({success: function(d) { self.randomUserView.render() }})
当模型改变时,如何使视图自动更新?例如,我不想每次调用fetch时都指定上面的回调函数。我尝试在初始化时将视图绑定到许多模型事件,但这并没有起作用。
在视图上,向视图的模型添加一个事件处理程序:
initialize: function() {
this.model.on('change',this.render,this);
}
initialize: function() {
... your code...
this.model.bind('add', this.render);
}
这样,您只需在视图初始化时订阅一次,就不必再传递显式回调函数。
实际上,如果您想在获取集合时刷新视图,则需要绑定RESET!
this.model.bind('reset', this.render, this);
只有在编辑当前集合时才会触发更新。
PS:bindAll 是危险和懒惰的。(而且可能会在以后给你带来问题)
this.model.bindAll(this.render)
,假设他对于在每个模型事件上渲染视图感到满意。 - jackwanders