Backbone显示/隐藏渲染视图的最佳实践

Bra*_*don 7 javascript backbone.js

使用Backbone的新手,有一个非常简单的应用程序.基本上有ClientsClientItems.我有一个视图来显示所有客户端,如果您单击客户端,您将被带到他们的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 .这样,上述逻辑仍然有效,并且您的路由器功能不会充满逻辑,用于管理此刻可见的视图.