簡體   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