angularjs – 有没有办法在禁用调试信息时获取DOM元素的范围?
我正在编写一个需要检索当前DOM元素范围的指令.使用非公共api angular.element().scope();
它工作得很好,直到angular 1.3引入了一个新功能$compileProvider.debugInfoEnabled(false);其主要目的是提高性能以避免DOM元素中的绑定数据.但是当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是一个jqLit??e对象,你需要在element [0]上设置isolateScope()函数.您应该已经将jqLit??e包装元素和作用域传递到链接函数中,然后将其传递给您的服务方法. Utils.setElementIsolateScope(element,scope); 然后,为了访问隔离范围,您将获得对元素的引用,然后执行此操作(假设child_element是对元素/指令的引用): var child_iso_scope = _.isFunction(child_element.isolateScope) && child_element.isolateScope(); 根据您获取元素引用的方式,您可能需要将它包装为jqLit??e包装器,如下所示: child_element = angular.element(child_element); 然后使用与上面相同的方法来获得隔离范围.希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- scala – 视图和流之间有什么区别?
- .net 平台下的webservice利用soapheader自定义信息做验证
- Bootstrap 实例 - 标签页(Tab)插件
- angular – Firebase – 如何检测/观察Firebase用户何时验证
- Axis2发布的WebService中排除不需要公开的public方法
- 8天入门docker系列 —— 第一天 docker出现前的困惑和简单介
- bootstrap-导航(垂直分组)
- twitter-bootstrap – 如何在Cake-PHP-View中使用供应商文件
- shell脚本基础
- windows – 是否可以将kubernetes作为docker容器运行?