【问题标题】:unbinding children of backbone view取消绑定主干视图的子项
【发布时间】:2012-03-08 19:15:16
【问题描述】:

我有一个主干日历,每天都有很多选项。用户一次只能看到一天。

所以当用户选择去第二天或前一天时,我会调用MyApp.Views.ShowDay 来重绘这一天。

ShowDay 视图调用了几个子视图MyApp.Views.Hours。 当我创建新的一天时,我需要从旧的一天解除绑定,但这只会导致错误。

我正在尝试这样做的方式是

MyApp.Views.Showday = Backbone.View.extend({ 事件:{ "点击 div.change_day":"change_day" }, 更改日:函数(){ MyApp.Views.Hours.unbind(); //我也试过off(), off, remove() } });

这不是解绑孩子的方法吗?

【问题讨论】:

    标签: backbone.js unbind


    【解决方案1】:

    您需要显式解除事件处理程序与事件的绑定。请参阅另一个 SO 问题的答案,特别注意 bindTo 和 unbindFromAll 函数:

    Backbone.js : repopulate or recreate the view?

    【讨论】:

    • 感谢 Derick,我实际上已经阅读了您在 Los Techies 上关于您的绑定技术的文章,但我希望 更简单一些。我现在尝试一下。
    • 不幸的是,没有比这更简单的了。 Backbone 对此采取了不干涉的方法,让我们要么自取其辱,要么自己编写额外的代码。 FWIW:github.com/derickbailey/backbone.marionette/blob/master/… 只需从那里复制并粘贴代码,然后使用 _.extend 将其混合到您自己的东西中。 :)
    【解决方案2】:

    试试 MyApp.Views.Hours.remove()。这会从 dom 中移除视图及其元素,并拆除进程中的所有事件处理程序。然后重新创建小时视图

    【讨论】:

    • 这可能是因为我编写嵌套的方式,但这也不允许我在删除它后添加另一个孩子。我之前尝试过。
    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多