如何以角度为范围获取范围的根元素?

时间:2017-01-11 21:10:22

标签: angularjs

我通常需要元素的范围,例如$(element).scope()angular.element(..).scope()

但现在我遇到了相反的问题 - 我有一个范围,我需要找到生成它的元素。

如何从开发者控制台中找出它是哪个元素?

为什么我需要这个?

我正在处理别人的代码,修复错误。

我仍然想弄清楚一些东西,但有些代码很难理解。非常通用和大量的复制粘贴,因此搜索并不总是有帮助。

有很多使用父范围的ng-includes和指令。

有一种观点以某种方式调用服务 - 目前尚不清楚如何......

我确实有一个范围的引用,它与触发该功能的视图中的范围不同。

因此,如果我找到该范围来自的元素,它可以理清它们之间的关系等。至少给我一些带头。

显然,将来需要进行一些重构和最佳实践,但我必须首先关注这个错误。

1 个答案:

答案 0 :(得分:1)

我什么都不知道'开箱即用',但每个$ scope变量都有一个唯一的$ id属性;此外,每个具有$ scope的元素都标有' ng-scope'类。所以有一些类似于以下非常丑陋的方法!可能有所帮助(我假设你有jQuery;否则替换angular' squeryLite方法):

function findById(id) {
    var els = $('.ng-scope'); 
    for (var i=0; i<els.length; i++) {
        if ($(els[i]).scope().$id===id) {
            return els[i];
        }
    } 
    return null;
}

如果这确实有用,那么我觉得你的调试很痛苦。