如何判断范围是否已被销毁
How to tell if scope has been destroyed
我正在将内容放入队列中,然后一项一项地处理它们。这些东西可能属于 AngularJS 范围。如果它所属的范围在我到达它时已经被销毁,我想跳过处理它。 (用户已经离开将显示结果的 UI,因此没有必要计算它。)
一个选项是:
function enqueue(stuff, scope) {
queue.push(stuff);
scope.$on('$destroy', function() {
queue.discard(stuff);
});
}
但我觉得这有点重量级。它为每个 "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 范围。如果它所属的范围在我到达它时已经被销毁,我想跳过处理它。 (用户已经离开将显示结果的 UI,因此没有必要计算它。)
一个选项是:
function enqueue(stuff, scope) {
queue.push(stuff);
scope.$on('$destroy', function() {
queue.discard(stuff);
});
}
但我觉得这有点重量级。它为每个 "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
标记来检查作用域是否被销毁。