Backbone:重定向后视图不正确

时间:2015-07-21 08:46:30

标签: javascript backbone.js

我是Backbone的新手,并且有一个问题从almous开始想知道如何克服主视图的意外行为问题。  我启动页面看起来很好看。  2.点击按钮,将我引导到不同的视图并向我展示。  3.我点击"返回"按钮,我看到一个空白页面,但在DOM中我可以找到前一个视图中的一些元素,但不可见。

这是我的路由器代码(我希望这些内容足够):

home: function () {
    if (!app.leftMenuView) {
        app.leftMenuView = new app.views.LeftMenuView({
            el: $("#left_menu")
        });
    } else {
        app.leftMenuView.delegateEvents();
    }
    if (!app.homeView) {
        app.homeView = new app.views.HomeView({
            el: $("#main_container")
        });
    } else {
        app.homeView.delegateEvents();
    }
    if (!app.topMenuView) {
        app.topMenuView = new app.views.topMenuView({
            el: $("#top_menu")
        });
    } else {
        app.topMenuView.delegateEvents();
    }
},
search: function () {
    app.searchView = new app.views.SearchView({
        el: $("body")
    });
},

一个主要的html文件:

<body>
     <div id="search-div"></div>
     ...
</body>

HomeView:

app.views.HomeView = Backbone.View.extend({
    initialize: function () {
        this.render()
    },
    render: function () {
        var self = this;
        $.get('/template/home.html', function (data) {
            self.$el.html(_.template(data)({}));
        });
        return this;
    },
});

SearchView:

app.views.SearchView = Backbone.View.extend({
    events: {
        "click #left-arrow-icon": "toMainPage"
    },
    initialize: function () {
        this.render();
    },
    render: function () {
        var self = this;
        $.get('/template/searchView.html', function (data) {
            self.$el.html(_.template(data));
        });
        return this;
    },
    toMainPage: function () {
        Backbone.history.history.back();
    },
});

1 个答案:

答案 0 :(得分:0)

在提供的示例中,搜索视图(如果呈现)将销毁主html文件内容,因为提供的元素直接是正文。在任何情况下,如果您转到搜索视图,您的主页将被销毁或将无法再渲染。

我建议改进布局管理:

  • 每个视图单独的元素
  • 根据路线显示/隐藏根元素