5

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

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

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

4

3 回答 3

12

在视图上,将事件处理程序添加到视图的模型中:

initialize: function() {
  this.model.on('change',this.render,this);
}
于 2012-06-25T16:32:14.267 回答
1

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

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

这样,您甚至只在视图初始化中订阅一次,并且不必传递显式回调。

于 2012-06-25T16:35:44.843 回答
0

实际上,如果您想在集合上获取视图刷新,您需要绑定 RESET!

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

仅当编辑当前集合时才会触发更新。

ps bindAll 既危险又懒惰。(并且可能会给您带来麻烦)

于 2013-03-25T15:06:28.917 回答