我需要观察 URL 栏上的变化并据此执行某些操作。我想知道添加手表以查看更改的最佳方式是什么?
问问题
3320 次
2 回答
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);
});
或者您可以按照 Anders 的建议通过将函数传递给 $watch 的第一个参数来 $watch 任何您想要的值:
scope.$watch(function() { return $location.path(); }, function(newLoc, oldLoc){
console.log(newLoc, oldLoc);
});
然而,这会在你的 $digest 上产生更多的开销。
于 2013-02-19T15:45:29.517 回答
1
假设您在控制器中请求了 $location 对象,您可以这样做:
$scope.$watch(function() { return $location.path() }, function() {
// Do stuff when the location changes
});
于 2013-02-19T14:38:33.287 回答