以编程方式确定Backbone.js .on回调?

时间:2012-09-18 14:25:17

标签: javascript backbone.js

我正在尝试确定Backbone.js模型.on事件绑定的功能。例如,鉴于我有一个视图:

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

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

我查看了Backbone.js源代码,看起来绑定存储在._callbacks中。在._callbacks中,我可以确定模型绑定的事件。从上面的例子中我可以确定模型是否绑定了change事件。但是,是否可以确定模型绑定到视图的渲染功能?

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

谢谢!

1 个答案:

答案 0 :(得分:1)

有一些方法可以解决这个问题。你应该工作,但你必须手动禁用视图的正常绑定并添加你自己的:

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的变化。

相关问题