在AngularJS中更改路径而不重新加载后出现问题:

时间:2016-01-25 10:22:05

标签: angularjs

我已经实现了这里解释的解决方案 https://stackoverflow.com/a/24102139/2795097

app.run(['$route', '$rootScope', '$location', function ($route, $rootScope, $location) {
var original = $location.path;
$location.path = function (path, reload) {
    if (reload === false) {
        var lastRoute = $route.current;
        var un = $rootScope.$on('$locationChangeSuccess', function () {
            $route.current = lastRoute;
            un();
        });
    }
    return original.apply($location, [path]);
};
}])

在没有重新加载的情况下更改路径可以很好地解决这个问题。

之后我遇到使用<a href='...'>管理的链接$routeProvider时出现问题。他们应该重新加载视图,但实际发生的是路径正在改变,但我的视图根本没有更新。奇怪的是,有些链接实际上刷新了视图,有些则没有。

仅在导航后通过使用$location.path从解决方案false调用新方法时才会发生。

知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

我必须添加一个小延迟来取消注册$ locationChangeSuccess函数。 我的代码以这样的结尾:

\d[a-zA-Z]{1}|[a-zA-Z]\d{1}

};