我有一个主干JS和Turbolinks应用程序,其中的代码如下所示:
$(function() {
var AppRouter = Backbone.Router.extend({
routes: {
'': 'music',
'song/:musicID': 'songList'
},
...FUNCTIONS GO HERE
});
var appRouter = new AppRouter();
Backbone.history.start({ pushState: true, hashChange: false });
});
$(document).on('page:load', function (){
Backbone.history.stop();
var appRouter = new AppRouter();
});
基本上,起初没有错误。但是在首页更改后,我得到了错误:
Uncaught ReferenceError: AppRouter is not defined
最佳答案
您的范围有问题,这应该可以工作:
var AppRouter = Backbone.Router.extend({
routes: {
'': 'music',
'song/:musicID': 'songList'
},
...FUNCTIONS GO HERE
});
$(function() {
var appRouter = new AppRouter();
Backbone.history.start({ pushState: true, hashChange: false });
});
$(document).on('page:load', function (){
Backbone.history.stop();
var appRouter = new AppRouter();
});
您已经在DOM就绪的回调范围内声明了AppRouter,然后尝试在未定义它的'page:load'回调中引用它。在上面的代码中,它是在全局范围内定义的,因此两者都可以访问它。