[英]angularjs directive slow dom manipulation
我有一个指令,需要访问其中的元素的宽度。 我遇到的问题是宽度包含由angular编译的动态文本,并且角度指令似乎至少需要35毫秒才能实际编译内部链接函数。 结果,我添加了一个setTimeout-to-zero函数,但是感觉很脏。 我是否缺少某些东西,或者这仅仅是一个angularjs错误? 这是代码。
Javascript:
angular.module('myApp', [])
.directive('myDir', MyDirective);
function MyDirective() {
return {
restrict: 'E',
scope: {
mytext : '@'
},
template: '<span>{{mytext}}</span>',
link: function(scope, elem, attr) {
console.log(Date.now(), elem.text());
setTimeout(function() {
console.log(Date.now(), elem.text());
}, 0);
}
}
}
HTML:
<div ng-app="myApp">
<my-dir mytext="Hello"></my-dir>
</div>
这是控制台结果的示例:
1438529990502 "{{mytext}}"
1438529990523 "Hello"
您可以在此处进行演示: https : //jsfiddle.net/38m6hxk6/15/
您是对的,因为您需要超时,但是应该使用角度$ timeout。 它将等待angular完成最新的摘要循环。 您可以在文档中阅读有关内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.