我有一种情况,我想要更改地址栏中的URL,但我不希望Angular刷新控制器或视图,就像在正常的路径更改中一样。
因此,转到/data
然后点击说/data/just-blue
的链接只会刷新ngView
的一部分,而不是整个视图。
这怎么可能?
目前,我已在应用.when()
方法中将这2条路径定义为单独的.config()
路径。
感谢。
答案 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)