0

以下のルーターを定義していますが、.route機能が設定されていないようです。私は何を間違っていますか?助けてくれてありがとう。

# app.js.coffee

initialize: =>
  router = new Backbone.Router
  router.route "foo/:bar", "baz"
  console.log router.routes # returns undefined
4

1 に答える 1

3

使用して作成したルートRouter.routeは、オブジェクトに内部的に保存されます。コレクション Historyには追加されません。Router.routes

それでも機能します。証明については、こちらを参照してください。this.routesでは、ルートのみhomeが定義されていますが、それでもルートに到達できることに注意してくださいbaz。実際にルートが格納されている にチェックを入れると、ルート表示されます。bazBackbone.history.handlers

var Router = Backbone.Router.extend({
    initialize: function() {
        this.route("foo/:bar", "baz");
    },
    routes: {
        "": "home"  
    },
    home: function() {
        console.log("home hit");
    },
    baz: function(bar) {
        console.log('test hit: ' + bar);
    },
});
var router = new Router();
console.log(this.routes);
console.log(Backbone.history.handlers);
Backbone.history.start();
router.navigate("foo/testbar", { trigger: true });   


</p>

ただし、内部でまだ定義されていないthisため、コードで使用する必要があると思います。routerinitialize

@route "foo/:bar", "baz"
于 2012-12-12T20:42:33.300 に答える