我尝试使用backbone.js创建我的第一个javascript应用程序 而且我发现了奇怪的行为,不明白2段代码之间的区别 一个效果很好,第二个似乎不起作用。
在主页上显示提醒和'#test'URl
var AppRouter = Backbone.Router.extend({
routes:{
"": 'index',
"test": 'test'
},
index: function(){
alert('index');
},
test: function(){
alert('test');
}
});
var app = new AppRouter();
Backbone.history.start();
这不起作用,但Backbone.history.hanlers
看起来相同
var router = new Backbone.Router({
routes:{
"": 'index',
"test": 'test'
},
index: function(){
alert('index');
},
test: function(){
alert('test');
}
});
Backbone.history.start();
答案 0 :(得分:3)
两位代码之间的区别在于,在第一个代码中,您创建了一个名为AppRouter
的新类,而在第二个代码中,您只是创建了一个普通的Backbone.Router
类。
我可能会误解,但似乎你说的是第一个例子有效,而第二个例子没有?
第二个例子不起作用的原因是因为Backbone.Router只接受routes
哈希作为它的构造函数的参数。您传递的index
和test
函数不会作为对象上的函数创建。
如果要将routes
哈希传递给构造函数,则仍需要使用实际路由函数扩展Backbone.Router。例如:
var AppRouter = Backbone.Router.extend({
index: function(){
alert('index');
},
test: function(){
alert('test');
}
});
var app = new AppRouter({
routes:{
"": 'index',
"test": 'test'
}});
Backbone.history.start();