如何判断范围是否已被破坏

时间:2015-10-07 10:10:56

标签: angularjs scope destroy

我将东西放入队列并逐个处理它们。这些东西可能属于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已经组成,但我正在寻找类似的东西。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用ParquetWriter标志来检查范围是否被破坏。