如何更改URL不会触发$ route更改?

时间:2013-11-22 15:22:24

标签: angularjs angularjs-routing

我有一种情况,我想要更改地址栏中的URL,但我不希望Angular刷新控制器或视图,就像在正常的路径更改中一样。

因此,转到/data然后点击说/data/just-blue的链接只会刷新ngView的一部分,而不是整个视图。

这怎么可能?

目前,我已在应用.when()方法中将这2条路径定义为单独的.config()路径。

感谢。

2 个答案:

答案 0 :(得分:1)

所以基本上你可以做到以下几点:

$scope.$on("$locationChangeStart", function (event, next, current) {
        console.log(event, next, current);
        console.log(next);
        if (next == 'http://localhost:9000/data/just-blue') {
            setTimeout(function() {
                 $window.history.pushState("object or string", 
                 "Title", '/data/just-blue)'},20);
            event.preventDefault();
            // ... update your view
        }
    });

请注意,我使用setTimeout代替$timeout

答案 1 :(得分:0)

这是另一个解决方案:http://joelsaupe.com/programming/angularjs-change-path-without-reloading/(不使用pushState)