Angular:$ locationChangeSuccess在$ destroy之前触发

时间:2014-05-23 07:07:59

标签: javascript angularjs

我有一个控制器,我正在读取从父作用域设置的查询字符串值。因为它是更新位置的父作用域,所以$ scope。$ on不起作用,并且必须使用$ rootScope。$ on。即使我创建了一个析构函数,我也遇到了一个调用侦听器的问题。我通过添加行if ($location.path() != '/gumby') return;来解决问题,虽然我不喜欢它现在对路径有深入的了解。

除了通过添加$ scope。$ broadcast调用来修改父作用域之外,还有更好的方法可以从这个控制器管理这些事件吗?

var listeners = [];

var listener = $rootScope.$on('$locationChangeSuccess', function () {
  if ($location.path() != '/gumby') return;

  #Do some stuff

  }
});

listeners.push(listener);

$scope.$on('$destroy', function () {
  removeWatchers();
});

function removeWatchers() {
  for (var i = 0; i < listeners.length; i++) {
    var listener = listeners[i];
    if (listener) {
      listener()
    }
  }
}

0 个答案:

没有答案