繁体   English   中英

angularjs指令缓慢的dom操作

[英]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完成最新的摘要循环。 您可以在文档中阅读有关内容。

https://docs.angularjs.org/api/ng/service/$timeout

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM