0

我正在尝试确定 Backbone.js 模型 .on 事件绑定到什么功能。例如,假设我有一个观点:

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

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

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

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

谢谢!

4

1 回答 1

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

于 2012-09-18T14:55:20.257 回答