20

現在、ページ全体をリロードせずにルート パラメーターを変更する方法を見つけようとしています。たとえば、

http://www.example.com/#/page

ただし、ルートを次のように変更するには、名前を「George」に更新します。

http://www.example.com/#/page/george

すでにhttp://www.example.com/#/page/:nameがルーティングされている場合。

場所をリロードせずに。$routeParams.name = "George" を設定することはできますか?

編集:または、ページをリロードまたはリセットせずにhttp://www.example.com/#/page?name=George を更新する方法はありますか?

4

3 に答える 3

12

私は実際に、自分のアプリケーションにとってもう少しエレガントなソリューションを見つけました。

$locationChangeSuccess イベントは少し強引なアプローチですが、パスを確認すると、ルート パステンプレートが変更されていない場合はページのリロードを回避できますが、別のルート テンプレートに切り替えるとページがリロードされることがわかりました。

var lastRoute = $route.current;
$scope.$on('$locationChangeSuccess', function (event) {
    if (lastRoute.$$route.originalPath === $route.current.$$route.originalPath) {
        $route.current = lastRoute;
    }
});

そのコードを特定のコントローラーに追加すると、リロードがよりインテリジェントになります。

于 2014-03-24T15:55:46.997 に答える
-6

ng-show と ng-hide を使用してページの表示を変更できます。これらのトランジションはページをリロードしません。しかし、あなたが解決しようとしている問題は、ページをブックマークし、更新を押して目的のページを取得できるようにしたいということだと思います。

ページをリロードせずに状態を切り替えるのに最適な angular ui-router を実装することをお勧めします。唯一の欠点は、すべてのルートを変更する必要があることです。

ここで素晴らしいデモを確認してください。

于 2013-07-31T22:05:58.807 に答える