在Angular.js中观察$ locationProvider

时间:2013-02-19 14:33:29

标签: angularjs window.location

我需要在网址栏上观看更改并根据该操作执行某些操作。我想知道添加手表以查看更改的最佳方法是什么?

2 个答案:

答案 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
});