【问题标题】:Programmatically determine Backbone.js .on callbacks?以编程方式确定 Backbone.js .on 回调?
【发布时间】:2012-09-18 22:55:20
【问题描述】:

我正在尝试确定 Backbone.js 模型 .on 事件绑定到哪个函数。例如,假设我有一个视图:

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

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

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

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

谢谢!

【问题讨论】:

    标签: javascript backbone.js


    【解决方案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 模态对话框。我创建了父类负责渲染基本内容,然后我可以添加 mixin 来处理 jquery 与 vanilla 的变体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 2011-04-03
      • 1970-01-01
      • 2011-05-28
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多