Backbone.js路由器事件绑定未触发

Fdr*_*Fdr 6 backbone.js

我正在尝试使用模块组织您的应用程序(require.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
    };
});
Run Code Online (Sandbox Code Playgroud)

加载页面时没有任何反应.但这有效:

// 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
    };
});
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Fdr*_*Fdr 11

好的,这就是它的完成方式:


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

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

        Backbone.history.start();

        return app_router;
    };
Run Code Online (Sandbox Code Playgroud)