0

Backbone.Routerクラスを設定していて、すべてが完全に機能しています。ただし、少し(おそらく少しブロック)不便があります。

バックボーンルーターを使用してナビゲートするには、次のコードを使用します

myrouter.navigate('/search_term/2/filter1+filter2/');

これは正常に機能します。ただし、URLのさまざまなパラメータが同じ場所で更新されることはありません。たとえば、ユーザーが次のページ(3)に移動し、検索語とフィルターを更新しない場合があります。

やりたいのはこんな感じ

myrouter.navigate(':route_id', ':route_value');

たとえば、私はすることができます

myrouter.navigate(':query', 'search_term');
myrouter.navigate(':pagination', '5');

バックボーンはこれを行うことができますか?そうでない場合、可能な解決策はありますか?

4

2 に答える 2

0

バックボーンルートを拡張して希望どおりに機能する関数を自分で実装できます。

ルートのソースコードを読むと、正規表現パターンのパターンのみが変換され、非常に単純であることがわかります。次に、正規表現と一致する引数を使用してメソッドターゲットを適用します。

したがって、逆方向のルートをナビゲートするなどの場合は、自己拡張型Backbone.Routeを適用できます。

このようなもの:

myrouter = Backbone.Router.extends({
    navigate: function(a, b) {
        // Do something with my args here
        var result = doSomething(a, b);

        // Then execute backbone's official navigate with the results
        Backbone.Router.navigate.apply(this, result);
    }
});

doSomethingルートを逆作成する必要がある方法で機能するように関数を作成します。

しかし、これを行うためのバックボーンネイティブの方法はありません。ルーターは高度な機能を備えていません。

于 2013-01-01T22:06:25.280 に答える
0

私はこれを自分で修正することになりました。

解決策は、リクエストを送信するときと同じように、変更イベントにバインドしてモデルの変更をリッスンすることでした。

于 2013-01-02T12:24:42.883 に答える