AngularJS UI路由器 – 更改url没有重新加载状态

目前我们的项目使用默认$ routeProvider,我使用这个“hack”,更改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;
}]);

和控制器

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

我正在考虑用ui-router替换routeProvider用于嵌套路由,但是在ui-router中找不到。

是可能的 – 对angular-ui路由器做同样吗?

为什么我需要这个?
让我用一个例子解释:
创建新类别的路径是/ category / new
单击保存我显示成功警报,我想要更改路线/类别/新到/ caterogy / 23(23 – 是存储在db中的新项目的ID)

简单地说,你可以使用$ state.transitionTo而不是$ state.go。 $ state.go在内部调用$ state.transitionTo,但自动将选项设置为{location:true,inherit:true,relative:$ state。$ current,notify:true}。您可以调用$ state.transitionTo并设置位置:false。例如:
$state.go('.detail',{id: newId})

可以替换

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

编辑:如fracz建议,它可以简单地是:

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

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...