销毁或替换骨干JS视图,当发生路由更改时

问题描述 投票:0回答:1

我对Backbone JS视图有问题。发生路线更改时,它会根据路线功能创建新视图。但是以前的观点也存在。因此,存在多个视图,无法执行在每条路线的顶部,我要删除当前视图,然后为其分配新视图。这是我的main.js文件

    return Backbone.Router.extend({
    routes: {
        "": "viewHome",
        "about": "viewAbout",
        "find-courses": "findCourses",
        "courses": "viewCourses",
        "*other": "defaultRoute"
    },
    viewCourses: function () {
        var courseCollection = new Courses();
        var fetchDone = function () {
            if(courseView && courseView.remove) courseView.remove();
            this.courseView = new CoursesView({
                collection: courseCollection
            });
            this.courseView.render();
        };
        var options = {
            success: _.bind(fetchDone, this),
            error: this.onError
        };
        courseCollection.fetch(options);
    },

    onError: function () {
        alert('Some Error!');
    },
    viewAbout: function () {
        this.aboutView = new AboutView();
        this.aboutView.render();
    }

您能帮我解决这个问题吗?

backbone.js routing backbone-views backbone-routing
1个回答
0
投票

您可以执行类似操作

if(this.currentView) {
    this.currentView.remove();
}
this.currentView = new AboutView();

在每条路线中,您当然都可以通过将其提取到一个单独的方法中来进行改进,该方法可以在比例增加时接受新的视图构造函数,等等

© www.soinside.com 2019 - 2024. All rights reserved.