当我去路线时,我无法触发“刽子手”功能
的application.js
var init = function(){
console.log("init called"); #logged
var router = new Router();
console.log(router);
Backbone.history.start();
};
当我检查console.log(路由器)中的'router'变量时,它显示在路由器对象上创建了hangman函数
child
__proto__: ctor
constructor: function (){ return parent.apply(this, arguments); }
hangman: function () {
routes: Object
/hangman: "hangman"
__proto__: Object
__proto__: Object
但是,当我导航到localhost:3000 / hangman时,警报未被调用。你能说出我可能做错了吗?我在Rails应用程序中使用骨干。我不太了解Backbone如何理解Rails路由,因为localhost:3000 / hangman在我的rails路由器文件中定义。我想我可能要做localhost:3000 / hangman /#hangman以激活骨干路由(rails路由无关紧要),但这也不起作用。
router.js
$(function() {
window.Router = Backbone.Router.extend({
routes: {
'/hangman' : 'hangman'
},
hangman: function() {
console.log("hangman called"); #never logged
alert("hangman");
}
});
});
答案 0 :(得分:0)
延伸
Backbone.Router.extend(properties, [classProperties])
[...]请注意,您要避免在路径定义中使用前导斜杠:
您可能也对pushState
option感兴趣:
开始
Backbone.history.start([options])
[...]
要表明您希望在应用中使用HTML5pushState
支持,请使用Backbone.history.start({pushState: true})
。
首先修复你的路线:
routes: {
'hangman' : 'hangman' // No more leading slash.
}
然后使用pushState: true
让/hangman
(而不是/#hangman
)工作:
Backbone.history.start({pushState:true});