現在、私たちのプロジェクトは 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)に変更します。clicking
success-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})