5

URLバーの変更を監視し、それに基づいて特定のアクションを実行する必要があります。時計を追加して変更を表示するのに最適な方法は何でしょうか。

4

2 に答える 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 に答える