获取指令范围之外的范围元素

Est*_*ask 5 javascript angularjs angularjs-scope

是否有一个技巧可以将与范围相关联的元素与拥有它的指令相关联?

我的前提是它必须在最不利的条件下完成(从控制台或Greasemonkey脚本).例如,获取具有范围的元素

angular.element(document.querySelector('.ng-scope')).scope().$$childTail
Run Code Online (Sandbox Code Playgroud)

没有DOM遍历.

我想有可能遍历所有ng-scopeng-isolate-scopeDOM元素并映射它们的范围,但我正在寻找更优雅的解决方案(地图也需要保持最新,我试图远离DOMSubtreeModified,也赢了不和debugInfoEnabled残疾人一起工作.

use*_*490 7

范围(src)不保留对与其关联的元素的引用.毕竟,范围可以存在而不与特定元素相关联.

$ compile (src)是负责将元素与范围相关联的人.

编译过程的一部分增加了元素,让你从元素>>范围(例如angular.element("#something").scope()).范围似乎没有发生同样的情况.

所以另一方面,scope >> element,你必须映射范围id:按范围$ id获取DOM元素.Angular JS Batarang中的这个功能允许您从页面中选择一个元素并检查与之相关的范围?这就是它的完成方式.Batarang使用角度暗示.通过在页面上的所有元素与角暗示迭代ng-scope类,并返回一个与匹配范围ID (SRC: )function findElt.

function findElt (scopeId) {
  var elts = document.querySelectorAll('.ng-scope');
  var elt, scope;

  for (var i = 0; i < elts.length; i++) {
    elt = angular.element(elts[i]);
    scope = elt.scope();
    if (scope.$id === scopeId) {
      return elt;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)