Bra*_*don 7 javascript backbone.js
使用Backbone的新手,有一个非常简单的应用程序.基本上有Clients和ClientItems.我有一个视图来显示所有客户端,如果您单击客户端,您将被带到他们的ClientItems.转到此ClientItems视图应该只隐藏Clients视图并返回到客户端应该隐藏ClientItems.现在,在我render()的每个视图的函数中,它将通过集合并动态地向页面添加内容.当我在两者之间往返时(使用后退按钮)我不需要再次完全渲染,因为页面中的所有数据都是隐藏的.这个逻辑应该在哪里?现在我在render()功能中有它但感觉马虎,处理这个的首选方法是什么?
小智 12
我们正在使用一个全局变量,App其中包含跨应用程序使用的几个常
var App = {
initialize : function() {
App.views = {
clientView : new ClientsView(),
clientItemView : new ClientsItemsView()
}
},
showView: function(view){
if(App.views.current != undefined){
$(App.views.current.el).hide();
}
App.views.current = view;
$(App.views.current.el).show();
},
...
}
Run Code Online (Sandbox Code Playgroud)
然后我App从应用程序的其他部分使用它:
App.showView(App.views.clientView);
Run Code Online (Sandbox Code Playgroud)
小智 5
IntoTheVoid的解决方案很好 - 有一个地方可以隐藏/显示视图.但是你如何激活逻辑呢?
根据我的经验,路由器是最好的选择.当路径更改并调用相应的函数时,您应该更新活动的可见视图.
如果您需要同时显示多个视图,该怎么办?如果您的主视图在路径更改时始终发生更改,并且有多个辅助粘贴视图,则无需担心.但是如果它比这更复杂,可以考虑创建一个将所有相关视图整齐地打包到一个包含el节点的ComboView .这样,上述逻辑仍然有效,并且您的路由器功能不会充满逻辑,用于管理此刻可见的视图.