私のAngularアプリは、ユーザーがアイテムをロードできるようにします。その場合、アイテムのIdを含むクエリ文字列を設定して、ユーザーがページを更新する(またはリンクする)ようにします)、URLは既に設定されています(IDが$ routeParamsに存在する場合、アイテムをロードするコードが既に配置されています)。
ルートを発生させずにそのクエリパラメータを設定するにはどうすればよいですか?ルートが発生した場合、ページ上にリセットされる他のもの(すべてのデータをリロードする必要があるプラグインを含む)があるため、クエリパラメーターのみを変更することが重要です。
要するに、アイテム123をロードするときに、URLが次のように変更されるだけです。
www.myurl.com/#/Items
に:
www.myurl.com/#/Items?id=123
ルーティングは行われません。
これを行う最良の方法は何ですか?
$ routeProvider 設定でreloadOnSearch
をfalseに設定します。
$routeProvider
.when('/items', {
controller: 'ItemsCtrl',
templateUrl: '/templates/items',
reloadOnSearch: false
},
...
);
コントローラーで$location.search()
を使用してid
パラメーターを設定します。
$location.search('id', 123);