backbone.js中的自动更新视图

时间:2012-06-25 16:20:01

标签: backbone.js

我使用backbone.js并且拥有一个没有集合的模型。 在视图中,我使用回调调用模型上的fetch以呈现视图。

this.user.fetch({success: function(d) { self.randomUserView.render() }})

如何在模型更改时自动更新视图?例如每次调用fetch时我都不想指定上面的回调。我尝试在初始化时将视图绑定到许多模型事件,但这不起作用。

3 个答案:

答案 0 :(得分:12)

在视图上,为视图的模型添加一个事件处理程序:

initialize: function() {
  this.model.on('change',this.render,this);
}

答案 1 :(得分:1)

Backbone是事件驱动的,而不是回调驱动的框架(虽然从技术上讲它们是回调)。而且你的方法似乎不是Backbone原生的。当你执行fetch()时,用户模型将自动触发“添加”事件。您需要做的只是在相应的视图中添加初始化:

initialize: function() {
  ... your code...
  this.model.bind('add', this.render);
}

这样你甚至只在视图init中订阅了一次,并且不必传递显式的回调。

答案 2 :(得分:0)

实际上,如果你想对集合上的fetch进行视图刷新,你需要绑定RESET!

this.model.bind('reset', this.render, this);

只有在编辑当前集合时才会触发更新。

ps bindAll是危险和懒惰的。 (可能会让你遇到问题)