Backbone.js视图delegateEvents不受约束(有时)

时间:2011-02-26 08:53:15

标签: javascript javascript-events backbone.js

我正在使用Backbone.js,有时views events无法正确绑定。

我可以在jQuery中用$(viewselector).data()检查事件绑定情况。大多数时候都有活动,有时候没有!

是否有任何我应该注意的事情会导致这种情况?

2 个答案:

答案 0 :(得分:16)

初始化视图时,会将事件委托给this.el。所以你需要:

  • 通过为构造函数提供“el”选项来指定元素
  • 来创建视图
  • 在视图中定义el,tag,id,classname,以便直接在页面上创建或查找元素。
  • 将渲染的视图附加到视图的“el”元素
  • 确保在创建视图后不替换“el”元素

对于最后一项,如果必须这样做,您可以再次调用delegateEvents以在视图上重新委派事件。

答案 1 :(得分:12)

我在这些场景中的方法是在每个具有事件的视图的渲染中添加delegateEvents(),如下所示:

  $(this.el).empty();
  $(this.el).html(this.template({}));
  this.delegateEvents(); // this will bind all events ONCE AGAIN

这非常适合动态特别创建的视图,即每次点击左右声明为新的视图......