以编程方式确定主干.js .on 回调



我正在尝试确定 Backbone.js 模型 .on 事件绑定到什么功能。例如,鉴于我的观点是:

this.model.on('change', this.render, this);

我希望能够以编程方式确定当模型更改时将调用渲染函数。

我查看了 Backbone .js源代码,似乎绑定存储在._callbacks中。在._callbacks我可以确定模型绑定到的事件。从上面的例子中,我可以确定模型是否绑定了更改事件。但是,是否可以确定模型绑定到视图的呈现函数?

对于那些好奇的人,我正在尝试扩展视图的渲染功能,我目前正在使用它。但是,当我扩展/重新分配渲染函数时,它会破坏模型的事件绑定。

谢谢!

有几种方法可以做到这一点。您的应该可以工作,但您必须手动禁用视图的正常绑定并添加您自己的:

function renderMore() {
    //do your pre-render code
    view.render()
    //do your post-render code
}
model.off('change', view.render);
model.on('change', renderMore);

然而,这是一个非常糟糕的代码气味,封装不佳。您是否考虑过在子类中对视图进行子类化并在正确的时间调用父类的render方法?

我遇到过这样一种情况,即我希望能够将对话框呈现为没有额外外观元素的纯窗口,以及带有标题栏、关闭按钮等的 jquery 模式对话框。我让父类负责渲染基本内容,然后我可以添加 mixins 来处理 jquery 与 vanilla 的变化。

最新更新