我有一个使用ng-repeat的简单模板:
template.html
<div id='tmpl'>
<ul>
<li ng-repeat="item in items">{{ item.desc }}</li>
</ul>
</div>
在我的指令中,我正在使用自定义范围编译该模板。然后将该模板添加到页面中:
var element = $('#my-div');
var compiledTemplate = $compile(scope.template)(customScope);
element.before(compiledTemplate);
$('#tmpl').show();
这很好用,但是问题是在调用show()之后,我正在尝试访问模板innerHeight(),但是那时模板内的ng-repeat还没有被执行而且我&# 39; m在呈现元素之前获取值。
$('#tmpl').innerHeight(); // returns value before ng-repeat is finished
那么,在ng-repeat完成处理元素之后,是否有一种安全的方法对编译元素进行DOM操作?
答案 0 :(得分:0)
您可以创建一个指令并在后链接阶段获取'innerHeight'。 应该已经执行了ng-repeat并且应该有正确的高度。
或者,您可以使用$ timeout并在模板完全呈现后运行该函数。