编译后操作模板

时间:2015-04-30 08:40:57

标签: javascript angularjs templates angular-directive

我有一个使用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操作?

1 个答案:

答案 0 :(得分:0)

您可以创建一个指令并在后链接阶段获取'innerHeight'。 应该已经执行了ng-repeat并且应该有正确的高度。

或者,您可以使用$ timeout并在模板完全呈现后运行该函数。