编译后操作模板
Manipulate template after compilation
我有一个使用 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 尚未执行,我' m 在渲染元素之前获取值。
$('#tmpl').innerHeight(); // returns value before ng-repeat is finished
那么,在 ng-repeat 完成处理元素之后,是否有一种安全的方法来对编译后的元素进行 DOM 操作?
您可以创建一个指令并在 post link 阶段获取 'innerHeight'。
ng-repeat 应该已经被执行并且正确的高度应该可用。
或者,您可以在模板完全呈现后使用 $timeout 和 运行 函数。
我有一个使用 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 尚未执行,我' m 在渲染元素之前获取值。
$('#tmpl').innerHeight(); // returns value before ng-repeat is finished
那么,在 ng-repeat 完成处理元素之后,是否有一种安全的方法来对编译后的元素进行 DOM 操作?
您可以创建一个指令并在 post link 阶段获取 'innerHeight'。 ng-repeat 应该已经被执行并且正确的高度应该可用。
或者,您可以在模板完全呈现后使用 $timeout 和 运行 函数。