2013-06-13 7 views
6

引用の適切な使用:AngularJSとコメントの1からngCloak

ブラウザがレンダリングしようとするかもしれないので、それだけは本当に、あなたの「index.htmlを」ページで必要とされていますAngularの前のものは に解析してコンパイルする機会がありました。実行時に、 ng-view、ng-includeなどのためにAngularがコンテンツを取得すると、 ブラウザがレンダリングされる前にAngularによって処理されます。

これを確認するためにjsFiddleに例を作成しました。驚いたことに、ブラウザで表現される前に評価されません。テンプレートはまず&にリンクされ、DOMに添付されることが期待されますが、そうではありません。

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

答えて

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に表示するために変更を "ダイジェスト"する必要があります。

+0

私はあなたが提供した最良の例ではなかったかもしれません。(ちょうどそれを修正しました)...私はテンプレートをレンダリングするためには "ダイジェスト"サイクルが必要だと思っています。テンプレートがコンパイル&リンクされ、DOMに追加されます。その場合、警告がポップアップする前にDOMに変更はありません。だから、ページが最初にロードされたのかどうか、後でAngularでロードされたテンプレートであるかどうかは関係ありません。 'ngCloak'はまったく同じ方法で使うべきでしょうか? – PrimosK

+0

角度ライフサイクル(アラート付き)を「中断」しないと、未処理のテンプレートを表示できないため、DOMに添付されていても問題はありません。わかりませんが、説明するのは難しい – Guillaume86

+0

しかし、角度が "起動"される前に未レンダリングされたテンプレートを見ることができます。それはng-cloakの目的です – Guillaume86

関連する問題