我需要在网址栏上观看更改并根据该操作执行某些操作。我想知道添加手表以查看更改的最佳方法是什么?
答案 0 :(得分:12)
事件存在,出于某种原因它们只是没有记录。
尝试以下活动:$locationChangeStart
和$locationChangeSuccess
scope.$on('$locationChangeStart', function (event, newLoc, oldLoc){
console.log('changing to: ' + newLoc);
});
scope.$on('$locationChangeSuccess', function (event, newLoc, oldLoc){
console.log('changed to: ' + newLoc);
});
或者你可以通过将函数传递给$ watch的第一个参数来看$你想要的任何值:Anders建议:
scope.$watch(function() { return $location.path(); }, function(newLoc, oldLoc){
console.log(newLoc, oldLoc);
});
然而,这会在你的$ digest上产生更多的开销。
答案 1 :(得分:1)
假设您已在控制器中请求$ location对象,您可以这样做:
$scope.$watch(function() { return $location.path() }, function() {
// Do stuff when the location changes
});