0

我的backbone.js 应用程序有问题,我想控制使用主干路由器渲染哪个subviev,但我一直遇到命名空间问题。我收到“未捕获的 ReferenceError:未定义应用程序”错误,并且我尝试过的所有其他解决方案都没有成功。使用路由器控制视图可能有更好的解决方案,但我尝试了其他解决方案 3 小时但没有成功。我希望你能帮助我。

这是我的代码:

(function($){    


var App = Backbone.View.extend({
    el: $('body'),

    initialize: function () {
        _.bindAll(this, 'render');
        this.mainApp = new LoginApp();
        this.render();
    },

    render: function(){
        $(this.el).append(this.mainApp.render().$el);
    },
    setmainApp: function(mApp) {
        this.mainApp = mApp;
    }
});

var LoginApp =Backbone.View.extend({
    initialize: function () {
        _.bindAll(this, 'render');
    },

    render: function() {
        $(this.el).append("<h1>Hello World</h1>");
        return this;    
    }
});

var RegisterApp =Backbone.View.extend({
    initialize: function () {
        _.bindAll(this, 'render');
    },

    render: function() {
        $(this.el).append("<h1>Hello World2</h1>");
        return this;    
    }
});


//Router
var AppRouter =Backbone.Router.extend({
    routes : {
        "login" : "login",
        "register": "register",
        '*path':  'defaultRoute'
    },
    login: function() {
        //Problem
        app.setmainApp(new LoginApp);
        app.render();
    },
    register: function() {
        app.setmainApp(new RegisterApp);
        app.render();
    },
    defaultRoute: function() {
        app.setmainApp(new LoginApp);
        app.render();
    }
});
var appRouter = new AppRouter;
Backbone.history.start();
app = new App();

})(jQuery);
4

1 回答 1

1

尝试更改顺序:

var appRouter = new AppRouter;
app = new App();
Backbone.history.start();
于 2013-10-03T13:00:01.660 回答