AngularJS UI ルーター - 状態を再読み込みせずに URL を変更する 質問する

AngularJS UI ルーター - 状態を再読み込みせずに URL を変更する 質問する

現在、私たちのプロジェクトは default を使用しており、ページをリロードせずに$routeProvider変更するために、この「ハック」を使用しています。url

services.service('$locationEx', ['$location', '$route', '$rootScope', function($location, $route, $rootScope) {
    $location.skipReload = function () {
        var lastRoute = $route.current;
        var un = $rootScope.$on('$locationChangeSuccess', function () {
            $route.current = lastRoute;
            un();
        });
        return $location;
    };
    return $location;
}]);

そしてcontroller

$locationEx.skipReload().path("/category/" + $scope.model.id).replace();

routeProviderネストルートを に置き換えることを考えていますui-routerが、 ではこれが見つかりませんui-router

同じことをすることは可能ですかangular-ui-router?

なぜこれが必要なのでしょうか? 例を挙げて説明しましょう:
新しいカテゴリを作成するためのルートは、保存/category/new後に表示され、ルートを(23 - データベースに保存されている新しいアイテムの ID)に変更します。clickingsuccess-alert/category/new/caterogy/23

ベストアンサー1

$state.transitionTo 単にの代わりにを使用できます $state.go 。は内部的に $state.go を呼び出します $state.transitionTo が、オプションを自動的に に設定します { location: true, inherit: true, relative: $state.$current, notify: true } 。 を呼び出し $state.transitionTo て を設定できます notify: false 。 例:

$state.go('.detail', {id: newId}) 

次のように置き換えることができる

$state.transitionTo('.detail', {id: newId}, {
    location: true,
    inherit: true,
    relative: $state.$current,
    notify: false
})

編集: fracz が示唆したように、単純に次のようになります:

$state.go('.detail', {id: newId}, {notify: false}) 

おすすめ記事