gpt4 book ai didi

javascript - 控制台中的 Angular : get the scope I created (not the whole scope)

转载 作者:行者123 更新时间:2023-11-29 15:33:59 24 4
gpt4 key购买 nike

我知道我知道

angular.element(document.querySelector('<selector-name>')).scope()

我可以得到范围。但这给了我一切($$childTail、$$childHead 等)。

是否有一种方法可以只提供我在 Controller 上创建的 $scope 元素(变量和函数)?

最佳答案

据我所知,提供几乎完全相同的这些属性的一个选项是获取您检索的范围的差异(通过 angular.element(/*...*/).scope ()),以及该作用域的原型(prototype)。

这是一个执行此操作的示例函数:

function getAssignedScopeProperties(targetScope){
var targetProto = Object.getPrototypeOf(targetScope);

var assignedProperties = {};
for (var prop in targetScope) {
if (targetScope.hasOwnProperty(prop) && typeof targetProto[prop] === "undefined") {
assignedProperties[prop] = targetScope[prop];
}
}
return assignedProperties;
}

然后使用函数:

var targetElement = angular.element(document.querySelector('<selector-name>'));
var targetProps = getAssignedScopeProperties(targetElement.scope());

不幸的是,在 Angular 1.3.15 中,这似乎保留了 $$watchersCount 属性。这在 1.3.14 版和 1.3.16 版中都没有发生,因此这可能是 AngularJS 1.3.15 版中的一个错误。

也就是说,对 $$watchersCount(或带有它的黑名单)进行防范以抵御具有此类错误的 Angular 版本对我来说并不合适。确保这种情况不会发生的另一种选择是在内部 if 中包含对 prop.charAt(0) !== "$" 的检查,但假设目标是保留所有值在 Controller 中分配的属性,删除 Controller 定义的以 $ 开头的任何内容肯定是错误的(当然,构建 Controller 的人分配给以 $ 开头的属性> 也是错误的,但这既不在这里也不在那里)。

关于javascript - 控制台中的 Angular : get the scope I created (not the whole scope),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31571615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com