更改el属性时未激发主干视图事件
Backbone View Event not firing when changing el property
我是Backbone的新手,正在尝试做一些例子,但我被这个卡住了。我有以下主干视图:
CommentBoxView = Backbone.View.extend({
initialize: function () {
this.render();
},
render: function () {
var template = _.template( $("#comment_box_template").html(), {} );
this.el.html(template);
},
events: {
"keypress textarea": "doKeyPress"
},
doKeyPress: function (event) {
console.log(event);
}
});
一切正常,但如果我更换
this.el.html(模板);
这个:
this.el=$(template).replaceAll(this.el);
根本不会触发按键事件。有人能向我解释一下为什么会发生这种情况,以及如何使代码正常工作吗?非常感谢大家。
Backbone使用视图的delegateEvents
方法将jQuery delegate
调用绑定到视图的el
,该delegate
处理视图的所有事件。如果你这样做:
this.el = $(template).replaceAll(this.el);
你失去了绑定到this.el
的delegate
,你的事件也随之发生。你的this.$el
也会与this.el
不匹配,这也不好。更改视图的el
的正确方法是使用setElement
:
setElement
view.setElement(element)
如果要将Backbone视图应用于其他DOM元素,请使用setElement,它还将创建缓存的
$el
引用,并将视图的委派事件从旧元素移动到新元素。
所以你应该可以这样做:
this.setElement($(template).replaceAll(this.el));
相关文章:
- 取消绑定主干视图事件
- 更改el属性时未激发主干视图事件
- angularjs中的SyncFusion树视图事件
- 在视图被替换后,主干视图事件未激发,然后放回页面上
- 主干视图事件绑定较晚
- 主干视图事件未触发 - 不知道原因
- Aurelia:调整大小/布局更改视图事件
- 主干 - 在模型更改时取消注册视图事件
- 在单页应用程序上实现Google Analytics页面视图事件的行为很奇怪
- 单击时呈现视图事件
- 木偶的复合视图事件未触发
- 主干,触发视图事件
- 主干视图事件仅在视图呈现后触发一次
- Dropzone.js AMD内部Backbone视图事件
- 提升骨干.js视图事件
- ExtjsMVC嵌套视图事件和异步函数
- 复选框和标签的主干视图事件处理程序
- 主干-从子视图触发父视图事件
- 骨干视图事件没有触发
- 在父元素上注册视图事件