2

私の問題は:

すべてのHTMLは<div id="application">コンテナ内にあり、デフォルトでは0不透明です。これは、JavaScriptがいくつかのDOMポジショニングを行うためです。これがすべて完了したら、にを追加するだけでページが表示class="rendered"されます。<div id="application>"

つまり、バックボーンルーターのすべてのルートについて、実際のルーティングの前に、または各ルートで常にトリガーされるものが必要です。これは可能ですか?

手伝ってくれてありがとう!

4

2 に答える 2

10

Backbone.Routerルートがトリガーされたときにイベントを発行するため、特定のイベントにバインドするか、allすべての有効なルート変更をキャプチャすることができます。イベント引数には、ルートコールバック名が含まれます。

var MyRouter = Backbone.Router.extend({
    routes: {
        "foo": "bar"
    },

    initialize: function() {
        this.on('all', function(routeEvent) {
            // If you had clicked #foo, routeEvent would contain
            // `route:bar`. You can trigger your CSS changes here.
        });
    }
});

この種のコードは、見方をすればより良いと思いますが、これはあなたが求めていることを実行するはずです。

于 2012-10-07T21:44:06.493 に答える
2

パラメータを受け取る1つのメソッドをルータに定義できます。次に、すべてのルートについて、そのメソッドを呼び出し、レンダリングするビューを決定するために使用される1つの引数を渡します。メソッドの最初に、実行したい「on-every-router-call」ロジックを定義できます。

例えば:

routes:
    "": "renderPage"
    ":page": "renderPage"


renderPage: (page) ->
// check if page is defined, if not render index, if it is, render that page
于 2012-10-07T21:29:22.967 に答える