我有一个主干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'回调中引用它。在上面的代码中,它是在全局范围内定义的,因此两者都可以访问它。

07-24 20:00