我想使用$ location来浏览普通静态加载页面上的自包含注释部分,但它似乎打破了后退按钮。
当我使用$ location导航到几个页面,然后点击外部链接时出现问题。它转到了那个链接,但当我回击时,它将URL更改为最后一个,但实际上并没有更改页面(即它保留在外部页面上)。如果我继续单击返回,它会更改URL(因此网址历史记录很好),但它实际上并没有从该网址加载页面,直到我到达我访问过的第一个网页(如果这是有道理的......)。所以,例如:
所以,导航应用程序:
www.example.com - 使用评论
www.example.com?page=2 - 使用$ location并正确加载新评论
www.example.com?page=3 - 使用$ location并正确加载新评论
www.externalexamplepage.com - 正确导航到该页面。
返回 - 将地址更改为www.example.com?page=3但保留在www.externalexamplepage.com
返回 - 将地址更改为www.example.com?page=2但保留在www.externalexamplepage.com
返回 - 将地址更改为www.example.com并正确加载页面。
那么,我怎样才能让它不破坏后退按钮?这就是我在评论指令中得到的:
$scope.$on('$locationChangeStart', function(e, newUrl) {
// If moving off current page...
if ($scope.changingCommentsPage === false) {
$window.location.href = newUrl;
}
});
$scope.$on('$locationChangeSuccess', function() {
// Get current urlParams
var urlParams = $location.search();
// Get new comments if page has changed
if ($scope.page != urlParams.page || typeof urlParams.page === "undefined") {
$scope.changingCommentsPage = false;
$scope.page = urlParams.page ? urlParams.page : 1;
if ($scope.page < 1) return;
// Get comments
getComments($scope.model.page);
}
});