我的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);
答案 0 :(得分:1)
尝试更改顺序:
var appRouter = new AppRouter;
app = new App();
Backbone.history.start();