2013-06-13 18 views
6

Alıntı doğru kullanımı:angularjs ve açıklamalar birinden ngCloak

tarayıcı işlemek için deneyebilirsiniz çünkü sadece gerçekten senin "index.html" sayfasında gereklidir Açısal önce daha önce ayrıştırma/derleme şansı vardı. Çalışma zamanında, Angular, ng-view, ng-include vb. Nedeniyle içeriğe çekildiğinde, tarayıcısını oluşturmadan önce Angular tarafından işlenir.

Bunu doğrulamak için jsFiddle numaralı telefondan bir örnek oluşturdum ve sürprizimin ifadesi tarayıcıda oluşturulmadan önce değerlendirilmiyor. Şablonun ilk olarak & bağlanmış ve daha sonra DOM'a eklenmesini beklerim - ki bu durum böyle değil.

Bu, her bir {{expression}} iç şablonunun titremeyi önlemek için ngCloak içine sarılması gerektiği anlamına mı geliyor yoksa bir şey mi özlüyorum?

cevap

2

Benim tahminim uyarısı 0 gecikmeyle setTimeout ekleyerek, açısal işini bitirdi önce tarayıcı işlemek için sağlamasıdır bir işlenen şablonu gösterir:

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

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

Ek not: can' Şablonun uyarıyı verdiğiniz noktada oluşturulmasını beklersiniz, en iyisi gizlenir, açısal kullanımı sihrini yapmak için kirli kontrol eder ve DOM'ta göstermeleri için değişikliklerinizi "sindirmesine" izin vermeniz gerekir.

+0

Bu konuda haklısınız .. Belki de verdiğim en iyi örnek değildi (sadece düzeltildi) ... Şablonun işlenmesi için "özet" döngüsünün gerekli olduğunu anlıyorum .. Ama bekledim (zaten benim gibi dedi) bu şablon ilk olarak derlenip bağlanacak ve sonra DOM'a eklenecek - eğer durum buysa, uyarıdan önce DOM'da herhangi bir değişiklik olmayacaktır. Bu yüzden, sayfanın başlangıçta yüklenip yüklenmediği ya da daha sonra yüklenen şablonlar olup olmadığı farketmez - ngCloak' tam olarak aynı şekilde kullanılmalıdır, değil mi? – PrimosK

+0

Önemsiz şablonun açısal yaşam döngüsünü (uyarı ile) "kırmamanız" durumunda, işlenmemiş şablonu görüntüleyemediğinizden, dolayısıyla DOM'a bağlı olmasının önemli olmadığından emin değilim, ancak açıklamaktan zor olduğumdan emin olun. – Guillaume86

+0

ama açılmamış bir şablon açılmadan önce görebilirsiniz "booted", ng-cloak – Guillaume86