作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个需要检索当前 DOM 元素范围的指令。使用非公共(public) API angular.element().scope();
在 angular 1.3 引入新功能 $compileProvider.debugInfoEnabled(false);
之前它运行良好这主要是为了提高性能以避免在 DOM 元素中绑定(bind)数据。但是当 debugInfoEnabled() 设置为 false 时,angular.element().scope()
将返回 undefined
.所以我必须找到另一种方法来获取 DOM 元素的范围,否则我必须重新设计我的代码逻辑。
有没有办法让这成为可能?
最佳答案
在使用 $compileProvider.debugInfoEnabled(false);
编译我们的应用程序后,我在我们的应用程序中遇到了类似的问题。 .我需要稍后访问我们指令的一些隔离范围,但无法使用 isolateScope()
方法。为了解决这个问题,我在 Utils 服务中创建了一个辅助函数,如下所示:
this.setElementIsolateScope = function(element, scope) {
element[0].isolateScope = function() {
return scope;
};
};
link()
中调用了此函数功能:自
element
是一个jqLite对象,你需要设置
isolateScope()
element[0]
上的功能.您应该已经包装了 jqLite
element
和
scope
已经传递到您的链接函数中,然后您只需将其传递给您的服务方法。
Utils.setElementIsolateScope(element, scope);
child_element
是对您的元素/指令的引用):
var child_iso_scope = _.isFunction(child_element.isolateScope) && child_element.isolateScope();
child_element = angular.element(child_element);
关于angularjs - 当调试信息被禁用时,有没有办法获取 DOM 元素的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29509496/
我是一名优秀的程序员,十分优秀!