2012-11-27 55 views
6

我正在嘗試關注Organizing your application using Modules (require.js我很努力地理解路由如何工作。Backbone.js路由器事件綁定未觸發

我不能讓簡單的結合爲指標的工作:

// Filename: router.js 
define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'views/projects/list' 
], function ($, _, Backbone, ProjectListView) { 
    var AppRouter = Backbone.Router.extend({ 
     routes: { 
      // Define some URL routes 
      '': 'index' 
     } 
    }); 

    var initialize = function() { 
     var app_router = new AppRouter(); 

     app_router.on('index', function() { 
      alert("index"); // this never gets called 
     }); 

     Backbone.history.start(); 

     return app_router; 
    }; 
    return { 
     initialize: initialize 
    }; 
});

當加載頁面時沒有任何反應。然而這工作:

// Filename: router.js 
define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'views/projects/list' 
], function ($, _, Backbone, ProjectListView) { 
    var AppRouter = Backbone.Router.extend({ 
     routes: { 
      // Define some URL routes 
      '': 'index' 
     }, 
     index: function() { alert("works"); } 
    }); 

    var initialize = function() { 
     var app_router = new AppRouter; 

     Backbone.history.start(); 

     return app_router; 
    }; 
    return { 
     initialize: initialize 
    }; 
}); 

我錯過了什麼?

回答

10

好了,所以這是它是如何做:


    var initialize = function() { 
     var app_router = new AppRouter(); 

     app_router.on("route:index", function() { 
      alert("hello world"); 
     }); 

     Backbone.history.start(); 

     return app_router; 
    }; 
+1

感謝的人,我都星期五爲此而努力工作,現在我已經看到了曙光;) – Puigcerber

+0

@Fdr的http://計算器。 com/questions/20017210/router-js-function-not-executed你能幫我解答一下:)謝謝 – CodeGuru