Backbone.View 的 setElement 不会移动事件侦听器

Backbone.View's setElement does not move the event listeners

本文关键字:移动 事件 侦听器 View setElement Backbone      更新时间:2023-09-26
这不是

关于嵌套视图的问题,我已经阅读了有关此的教程,但它们似乎不适用于我的问题。

所以:我有一个骨干视图,它render()方法通过外部 npm 模块创建一个全新的独立元素。这并不理想,但比自己重写要快。在render()内和实例化新元素之后,我调用this.setElement将视图绑定到新创建的元素。到目前为止一切顺利,this.$el已正确更新。

但是我已经定义了一个events映射,其事件处理程序不会移动到新$el。为什么?我做错了什么?

Ich创建了一个简化的要点:https://gist.github.com/4nduril/dab571e876b215e3786f

编辑:我已经将James Akwuh的小提琴编辑为类似于我的代码:https://jsfiddle.net/ztwz3e3o/您可以看到,我在事件侦听器中调用 render 方法。这个小提琴显然有效。所以我仍然不知道为什么我自己的代码没有。

我会继续挖掘。

猜你忘了调用render函数。

检查工作 JSFiddle。

我已经

找到了它,我很抱歉没有提供足够的信息让大家找到我的错误。

处理程序函数,我尝试与之绑定

events: {
    "click": "myHandler"
}

不是在视图本身中定义的(即在Backbone.View.extend() -call中),而是在外部范围内定义。所以当我"click": "myHandler"改为

"click": function () {
    myHandler();
}

它就像一个魅力。