では、ルート URL にパラメータ セグメントを含めることはできませんBackbone.History
。
url-fragment を取得してルートを照合し、そこから変数を抽出するために使用されるBackbone.History.getFragmentからのソース コード(少しレイアウトが異なります)
if (!fragment.indexOf(this.options.root)) {
fragment = fragment.substr(this.options.root.length);
}
このコードは、すべてのRouter.navigate
呼び出しが終了する場所です ({ trigger: false }
が適用されない限り)。したがって、フラグメントにstart
-function で定義されたルート URL が含まれている場合、フラグメントは元のフラグメントの部分文字列に置き換えられますが、ルートは都合よく省略されます。したがって、変数がフラグメントから取り除かれるとき、ルート URL は考慮されません。
そのため、ルート URL に変数を取得する方法はありません。定義上、アプリケーションがドメインのルート URL から提供されない場合、ルート URL は Backbone.History へのポインタにすぎないためです。ここに引用があります:
アプリケーションがドメインのルート URL / から提供されていない場合は、ルートが実際にどこにあるかを履歴に伝えてください...
したがって、アプリケーションが提供されていない場合は、ルーター/orders/12345/items
に/orders/78342/items
それを伝えようとしないことをお勧めします。代わりに、から提供してから/
、ルートを通常どおりに設定します。
routes: {
'orders/:id/items': 'item'
}
これで問題が解決することを願っています!