0

我刚开始在一个有点复杂的应用程序上使用 Backbone.js。在其中,我有一个根本没有导航的登录页面,以及一个管理员和用户部分,每个部分都有其导航栏。我的问题是,通过backbone.js 表示动态导航栏的好方法是什么。我考虑过为登录、管理员和用户部分创建三个不同的父视图。在每个视图中,我可以实例化(或不实例化)适当的导航栏。

4

2 回答 2

0

我认为你在父视图的想法上是正确的。我要做的是设置一个主容器并使用路由器填写适当的“页面”视图。例如。管理员,用户。在这些父视图中,您将有另外两个视图。一个用于导航栏,一个用于内容。在导航栏视图中,您可以分配您的事件和各种导航按钮。确保正确删除视图和取消委托事件,一个很好的例子是:

僵尸视图管理。取消委托事件

索引.html

<div id="main-container">
</div>

路由器.js

app.Router = Backbone.Router.extend({   
routes :{
    "" : "showLogin",
    "user" : "showUser",
},

initialize : function(app){
    this.RM = app.RegionManager;
},

showUser : function(){
    this.RM.show(new app.UserView());
},

showLogin : function(id){
    this.RM.show(new app.LoginView());
}
});

区域管理器.js

var app = app || {};

app.RegionManager = {

el : "#main-container",

show : function(view){
    if(this.current)
        this.current.close();
    this.current = view;
    this.current.render();
    $(this.el).html(this.current.el);
}
};

用户视图.js

app.UserPageView = Backbone.extend({
    initialize : function(){
        this.children.nav = new app.UserNavBar();
        this.children.content = new app.UserContent();
    },

    render : funciton(){
        this.$el.html(this.children.nav.render().el);
        this.$el.html(this.children.content.render().el);
    }
});
于 2013-04-02T03:38:40.993 回答
0

让您的视图声明它们的标题必需品并让您的视图管理器使用它们。我喜欢用文本和按钮数组定义一个标题属性——每个都有一个事件引用和各种东西,比如一个 enabled() 委托。我的视图管理器在加载和显示此视图时,将读取该属性并将其转换为标题绑定到的模型。如果视图上不存在标题属性,则不会为其创建标题。

于 2013-04-03T05:34:50.540 回答