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

标签 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 是虚构的,但我正在寻找类似的东西。谢谢!

最佳答案

您可以使用$scope.$$destroyed标志来检查作用域是否被销毁。

关于angularjs - 如何判断范围是否已被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32989526/

相关文章:

javascript - 从 AngularJS 中的回调函数内部访问 Controller

javascript - 将变量名称作为参数传递给另一个函数后,我可以将其作为字符串访问吗?

javascript - 在 Ember.js 中销毁对象

javascript - 通过帖子 ID 重定向到另一个 View ,不起作用

javascript - 在 ngShow 上隐藏/显示动画

AngularJs promise 中的 promise

javascript - window.name在IE中的作用范围是什么?

Python tkinter 2秒后删除标签

android - 如何正确关闭 Android 中的警报对话框?

javascript - 如何用不同的设备模式强制元素的高度?