2015-04-30 53 views
1

后,我有一个使用NG重复一个简单的模板:操纵模板编译

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-在模板中重复执行还没有执行,我得到的元素呈现之前的价值。

$('#tmpl').innerHeight(); // returns value before ng-repeat is finished 

那么,在ng-repeat完成处理元素之后,是否有一种安全的方式来编译元素的DOM操作?

+0

考虑在'ng-repeat'完成后进行操作。例如,检查http://stackoverflow.com/questions/19864007/angularjs-event-for-when-model-binding-or-ng-repeat-is-complete。 –

回答

0

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

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

+0

刚试过在$超时内包装DOM操作,这似乎工作,谢谢。 – Zed