0

在我的backbone.js应用程序中,我需要在模型更改时更新特定的视图字段。例如:

this.model.bind("change:name", function() {
    $("#name", this.el).text(this.model.get("name"))
})

我应该把这段代码放在哪里?如果我把它放在initialize()then 之前可能会调用该事件render()。这似乎有点脏。特别是我可能需要该事件来更新仅在渲染中创建的 UI 元素。

如果我把这段代码放进去,render()那么这似乎又不合适了。例如,我可能会调用render()几次,但这个逻辑应该只注册一次。

4

1 回答 1

2

在初始化中绑定事件是最简单的方法,所以我会让你的函数足够聪明,如果渲染还没有发生,就不会出错。

其他一些建议:

  • 使函数成为视图原型的一部分。
  • 您给定的代码将不起作用,因为this回调内部错误,因此您需要传递第三个参数。
  • bind已弃用。改为使用on
  • $(..., this.el)相当于this.$(...)
  • 回调会自动传递新值,因此get再次调用是额外的工作。

initialize: function(options){
  this.model.on('change:name', this.changeName, this);
},

changeName: function(model, name){
  this.$('#name').text(name);
}
于 2012-12-30T15:39:34.187 回答