javascript - 显示、隐藏,然后重新显示布局中断事件

标签 javascript backbone.js marionette backbone-events backbone-views

在显示、隐藏和重新显示 Marionette 布局时遇到问题。我相信这个问题也适用于常规的 Backbone Views 和 Marionette ItemViews。

总而言之,我有一个父 View 。初始化时,它会创建两个子布局,用作选项卡内容。问题是,当显示一个选项卡的选项卡内容时,会显示另一个选项卡的内容,当再次显示原始选项卡内容时,事件不再起作用。

子布局在父布局的 initialize 函数中创建并重新使用,因为当导航移回它们时需要保留它们的状态。

这是一个sample application这证明了我在说什么:

enter image description here

这是一个显示损坏事件的视频:Video Link

非常感谢!

最佳答案

问题是您没有创建子布局的新实例,而只是重复使用您在主布局中启动的实例。因此,当您更改区域的内容时,事件将作为 Marionette View 的 close() 函数的一部分解除绑定(bind)。

你应该像这样改变你的初始化函数:

initialize: function(){
    _.bindAll(this);
    // CREATE SUB LAYOUTS
   this.tab1Layout = B.tab1Layout;
   this.tab2Layout = B.tab2Layout;
},

并以这种方式调用布局:

// EVENT HANDLERS
on_show_tab_1_click: function(event){
    this.content.show(new this.tab1Layout());
},
on_show_tab_2_click: function(event){
    this.content.show(new this.tab2Layout());
}

关于javascript - 显示、隐藏,然后重新显示布局中断事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555090/

相关文章:

javascript - 如何防止 Backbone 应用程序中自定义事件的事件冒泡?

javascript - 元素在 Chrome 77 上短暂消失并重新出现

backbone.js - 如何在 Marionette 3+ 中实现已弃用的 CompositeView 功能?

backbone.js - Marionette AppRouter+Controller 相对于 Backbone.Router 的优势是什么?

javascript - 为什么我的 svg 节点会在 IE 中泄漏内存

javascript - 如何将基于 Canvas 的图形复制到 Webkit 中的剪贴板?

javascript - 如何通过 Promise 包装 useQuery hook

javascript - CK编辑器4,谷歌翻译也翻译我的MATHJAX公式,即使没有翻译

javascript - Backbone 模型验证

backbone.js - 在 Backbone.js 或 Marionette.js 中重复创建和销毁 View 而不创建 "memory leak"