【问题标题】:Layout and view management布局和视图管理
【发布时间】:2012-02-22 15:58:59
【问题描述】:

我从 Backbone 开始,我想实现一个简单的应用程序来管理用户和产品对象。页面布局始终相同:标题(首页)、菜单(左列)和内容(右列),但标题和菜单内容取决于当前模块(用户或产品)。

我搜索管理页面布局的正确方法。实际上,我在我的 Backbone.Router 的每个方法中管理标题和菜单,但我认为这不是最好的解决方案。

var appRouter = Backbone.Router.extend({
    routes: {
        "users": "listUser",
        "users/new": "newUser",
        "users/:id": "showUser",
        "products": "listProduct",
        "products/new": "newProduct",
        "products/:id": "showProduct"
    },

    listUser: function() {
        if (this.userHeaderView == null) {
             var header= new UserHeaderView();
             header.render();
             this.userHeaderView = header;
        }
        if (this.userMenuView == null) {
             var menu= new UserMenuView ();
             menu.render();
             this.userMenuView = menu;
        }
        this.contentView = new UserListView().render();
    }

    // ...

    newProduct: function() {
        if (this.productHeaderView == null) {
             var header= new ProductHeaderView();
             header.render();
             this.productHeaderView = header;
        }
        if (this.productMenuView == null) {
             var menu= new ProductMenuView();
             menu.render();
             this.productMenuView = menu;
        }
        this.contentView = new NewProductView().render();
    }

    // ...
});

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

    不应使用路由器来管理应用程序初始化。您应该创建一个管理初始化过程的应用程序对象,设置您始终需要的标题和菜单等(请注意,Backbone 不包括这样的对象。由您来创建这个对象)。

    路由器应该只知道它绝对需要知道的内容,以便让应用程序恢复到被请求的状态。

    我已经写了几篇关于这方面的文章,虽然我的文章确实引用了我的 Backbone.Marionette 框架,但我所说的原则也适用于标准 Backbone 使用:

    http://lostechies.com/derickbailey/2012/02/06/3-stages-of-a-backbone-applications-startup/

    http://lostechies.com/derickbailey/2012/01/02/reducing-backbone-routers-to-nothing-more-than-configuration/

    http://lostechies.com/derickbailey/2011/12/27/the-responsibilities-of-the-various-pieces-of-backbone-js/

    http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/

    http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

    http://lostechies.com/derickbailey/2011/08/30/dont-limit-your-backbone-apps-to-backbone-constructs/

    我意识到我建议您阅读比直接回答您的问题可能需要的更多信息。但是,这些文章的组合应该会告诉您许多不同的想法和观点,这些想法和观点将有助于您对 Backbone 的使用,这样您就可以避免一些关于路由器、管理布局、关闭视图等的常见错误。

    【讨论】:

    • 感谢您的回复,我已阅读所有文章,您的 RegionManager 似乎很有趣。但是,我不明白如何仅在模块更改时更改标题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多