每当我在其内部使用指令时,页面就会冻结,并消耗越来越多的 CPU 和 RAM,直到选项卡挂起。
我有的是这个
Application.Directives.directive('somed', function() {
return {
restrict: 'E',
// Load the template from a separate HTML file
templateUrl: 'directives/somed/view.html',
replace: true
};
});
和模板一样
<div ng-if="nonexistent">
<somed></somed>
</div>
哪个应该never加载嵌套指令(ng-if 计算结果为 false,因此不显示任何内容。如果我放置 div 标签而不是 somed,则可以确认这一点)。然而,浏览器却挂在上面。
怎么会发生,我该如何预防呢?
The 的文档ng-if http://docs.angularjs.org/api/ng.directive%3angIf says:
Also, ngIf
使用元素的编译状态重新创建元素。
由于模板为somed
参考somed
,它将无法成功编译。
这样就可以解释问题了。
有多种方法可以防止这种情况发生,具体取决于您的需要。
- 您可以包括
template
使用一个ng-include http://docs.angularjs.org/api/ng.directive%3angInclude并将模板放入您的$templateCache http://docs.angularjs.org/api/ng.%24templateCache.
- 您可以动态设置
html
在该指令上调用该指令的元素的link
函数,然后使用$compile http://docs.angularjs.org/api/ng.%24compile服务来解释其中的(可能是递归的)指令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)