現在、ページ全体を再読み込みせずにルートパラメータを変更する方法を見つけようとしています。たとえば、私が
ただし、名前を「George」に更新して、ルートを次のように変更します。
http://www.example.com/#/page/george
http://www.example.com/#/page/:name がすでにルーティングされている場合。
場所をリロードすることなく。 $ routeParams.name = "George"を設定できますか?
編集: または、ページを再読み込みまたはリセットせずに http://www.example.com/#/page?name=George を更新する方法はありますか?
わかりました、たくさんの検索の後。私は自分の質問に答えました。
angularのドキュメントで何かを見つけることは信じられないほど不可能ですが、それが見つかると、問題に対する考え方が変わることがあります。
私はここから始めました: http://docs.angularjs.org/api/ng 。$ locationこれが私をここに連れて行きました: http://docs.angularjs.org/guide/dev_guide。 services 。$ locationこの質問に私を連れて行きました: AngularJS Paging with $ location.path but no ngView reload
結局のところ、名前を変更したい場所($ scope。$ watch)に$location.search({name: 'George'});
を追加しました。
ただし、下部のStackOverflowリンクにあることを実行し、_$routeProvider.when
_に渡すオブジェクトにパラメーターを追加しない限り、これはページをリロードします。私の場合、それは$routeProvider.when('/page', {controller: 'MyCtrl', templateUrl:'path/to/template', reloadOnSearch:false})
のようになりました。
これで他の誰かの頭痛が軽減されることを願っています。
私のアプリケーションでは、もう少しエレガントな解決策を見つけました。
$ locationChangeSuccessイベントはブルートフォースアプローチのビットですが、パスをチェックすることで、ルートパスtemplateが変更されていない場合にページのリロードを回避できますが、別のパスに切り替えるとページがリロードされますルートテンプレート:
var lastRoute = $route.current;
$scope.$on('$locationChangeSuccess', function (event) {
if (lastRoute.$$route.originalPath === $route.current.$$route.originalPath) {
$route.current = lastRoute;
}
});
そのコードを特定のコントローラーに追加すると、リロードがよりインテリジェントになります。