使用router,backbone.js控制视图

时间:2013-10-03 12:30:53

标签: javascript jquery backbone.js

我的backbone.js应用程序有问题,我想控制使用骨干路由器呈现哪个子服务,但我一直遇到命名空间问题。我得到一个“未捕获的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);

1 个答案:

答案 0 :(得分:1)

尝试更改顺序:

var appRouter = new AppRouter;
app = new App();
Backbone.history.start();