我正在将东西放入队列中并一一处理它们。这些东西可能属于 AngularJS 范围。如果当我到达它时它所属的范围已经被破坏,我想跳过处理它。 (用户已离开显示结果的 UI,因此没有必要计算它。)
一个选项是这样的:
function enqueue(stuff, scope) {
queue.push(stuff);
scope.$on('$destroy', function() {
queue.discard(stuff);
});
}
但我觉得这有点沉重。它为每个“东西”添加一个事件处理程序。 (当我使项目出列时,我还需要删除此事件处理程序。)我觉得最好在我使项目出列时检查范围是否已被销毁。
function process(stuff, scope) {
if (scope.$destroyed) { // Fictional API.
return; // Skip processing, scope is already gone.
} else {
... // Actually process "stuff".
}
}
scope.$destroyed
是虚构的,但我正在寻找类似的东西。谢谢!
最佳答案
您可以使用$scope.$$destroyed
标志来检查作用域是否被销毁。
关于angularjs - 如何判断范围是否已被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32989526/