Backbone.js 显示其他视图时,在区域管理器中隐藏视图
我正在使用木偶区域管理器来管理我的视图。主要有三个区域: 1] 顶部菜单区域 2] 边栏区域 3] 主区域(不断变化的实际页面) 根据顶部菜单和侧栏上的操作,我会使用Backbone.js 显示其他视图时,在区域管理器中隐藏视图,backbone.js,marionette,Backbone.js,Marionette,我正在使用木偶区域管理器来管理我的视图。主要有三个区域: 1] 顶部菜单区域 2] 边栏区域 3] 主区域(不断变化的实际页面) 根据顶部菜单和侧栏上的操作,我会使用App.MainRegion.show(view)不断更改主区域中呈现的视图 现在有一个特定视图(persistView)一旦呈现,就不应该关闭,除非关闭选项卡/浏览器 当然,我不能在这里使用App.MainRegion.show(view),原因如下: 当第一次调用show(persistView)时,一切正常 如果我离开show
App.MainRegion.show(view)
不断更改主区域中呈现的视图
现在有一个特定视图(persistView
)一旦呈现,就不应该关闭,除非关闭选项卡/浏览器
当然,我不能在这里使用App.MainRegion.show(view),原因如下:
show(persistView)
时,一切正常show(otherview)
将调用persistView的close()
。这不是必需的
mainRegion
的正下方有一个名为persistRegion
的新区域persistView
将始终在persistRegion
中呈现persistView
的onShow()中,我隐藏了main区域
并显示了peristRegion
persistView
它应该隐藏自己并显示mainRegion
非常感谢您的帮助。我认为您的布局听起来不错,因为有一个区域可以容纳“持久”视图和主视图。但我不会让这两个区域相互了解或试图控制彼此的显示。相反,我将创建一个单独的对象,它知道如何执行此操作 该对象将负责从各个视图和相关区域收听正确的事件。然后它将确定要显示和隐藏的区域 但关键在于如何显示和隐藏区域。您不想关闭区域并删除其中的视图-至少,不想关闭
持久化区域
。但是,您可以做的是hide()
区域的el
persistRegion.$el.hide()
及
persistRegion.$el.show()
区域的
$el
属性将在区域内显示视图后或调用区域后可用。ensureElement()
我建议使用木偶区域的reset()方法,而不是隐藏和显示区域的元素。
这里有一个到文件的链接
=>可以随时重置区域。这将破坏任何现有视图
并删除缓存的el。下次
区域显示视图,从中查询区域的el
大教堂
myRegion.reset();
在视图中重复使用面域时,这非常有用
实例,并在单元测试中。请注意:region.ensureElement()已更改为region.ensureElement()…并且它再次更改为
\u ensureElement()
您应该在答案中包含链接中的相关信息,以便在链接死亡时不会丢失相关信息。