我有一个控制器,我正在读取从父作用域设置的查询字符串值。因为它是更新位置的父作用域,所以$ 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()
}
}
}