6

ngCloakディレクティブに関するコメントの 1 つからの引用( AngularJS ドキュメント):

Angular が解析/コンパイルする前にブラウザーがレンダリングを試みる可能性があるため、実際には「index.html」ページでのみ必要です。実行時に、Angular が ng-view、ng-include などによってコンテンツを取り込むと、ブラウザがレンダリングする前に Angular によって処理されます。

これを確認するためにjsFiddleで例を作成しましたが、驚いたことに、ブラウザーでレンダリングされる前に式が評価されません。テンプレートは最初にコンパイルおよびリンクされてから DOM にアタッチされると予想されますが、そうではありません。

それは、ちらつきを防ぐためにすべて{{expression}}の内部テンプレートもラップする必要があるというngCloakことですか、それとも何か不足していますか?

4

1 に答える 1

2

私の推測では、角度がジョブを終了する前にアラートがブラウザーにレンダリングを許可し、遅延が 0 の setTimeout を追加すると、レンダリングされたテンプレートが表示されます。

http://jsfiddle.net/g/FLZZR/5/

function TemplateController ($scope) {    
    $scope.expression = "This should already be rendered...";
    setTimeout(function(){
        alert("... but it isn't.");
    });
}

追加の注意: アラートを配置した時点でテンプレートがレンダリングされることを期待することはできません。 DOMで。

于 2013-06-13T13:35:11.100 に答える