0

次のサーバー側 URL マッピングが定義されています。

/main/item1
/main/item2

次のことができるように、SammyJS ルーティング サポートを追加しました。

/main/item1#/         /* main view */
/main/item1#/topups   /* topup view */

SammyJS を次のように設定しました。

s.app = Sammy(function() {
    this.get('#/topups', function() {
        console.log('Initializing topups view.');
    });
    this.get('#/', function() {
        console.log('Initializing main view.');
    });
});

問題は、別の「アイテム」のトップアップ ビューにリダイレクトする概要セクションがページにあることです。たとえば、私は url にいて/main/item1#/、このページには タグ が存在し<a href="/main/item2#/topups">item 2's topups</a>ます。

新しい URL にリダイレクト (ページの更新) されることを期待していますが、SammyJS が呼び出しを傍受し、定義したルートを/main/item2#/topups実行しているようです。this.get('#/topups')

/main/item1ハッシュの前の URL パス/main/item2が異なるため、SammyJS ルーティングがトリガーされないことが予想されます。

SammyJS でこの動作が発生しないようにする方法はありますか?

4

2 に答える 2

2

私は Sammy についてあまり知りませんが、どのルーターの動作からでも言えることは、ルーティングの可能性で最初に一致したものをキャッチするということです。そのため、#/topups で終わるものはすべて、ハッシュ記号の後です。

したがって、ルーターを次のように定義することをお勧めします。

this.get('#/topups/:item', function() {
    console.log('Initializing topups view for item: '+ item);
})

次に、次のような URL でページを呼び出します。

<a href="/main/#/topups/item2">item 2's topups</a>

これがあなたが探しているものであることを願っています

于 2013-09-24T16:57:40.357 に答える