2013-09-05 20 views
47

Bugünlerde AngularJS hakkında çok şey okuyorum ve bu büyülü $ saat işlevine rastladım. Nasıl kullanacağımı anlıyorum, ama arka planda nasıl uygulandığını merak ediyorum. Bir zaman aralığı fonksiyonu mu? Yoksa bu ifadeyi yapılan her ifadeyi Angular mi?

Şu anda kaynak kodun içine girmek istemiyorum ve biriniz cevabı zaten biliyor ve konu hakkındaki bilgisini paylaşmak isterim.

Teşekkürler.

+0

Bu yardımcı olacağını size http://stackoverflow.com/questions/9682092/databinding-in-angularjs/9693933#9693933 – Chandermani

+0

Bu da ... http://angular-tips.com/blog/2013/08/izle-nasıl-uygulamalı-çalışır-bir-digest/ – Sushrut

+0

İşte nasıl çalıştığına dair gerçek bir gerçek makale: http://teropa.info/blog/2013/11/03/make - kendi-açısal-bölüm-1-kapsamları-ve-digest.html –

cevap

72

Tüm saatler her sindirim döngüsünde değerlendirilir (bazen birden çok kez). Özet olayı bazı olayların bir sonucu olarak veya $ apply() çağrılarak girilir. Saatler, bir zamanlayıcıya bağlı olarak periyodik olarak çağrılmaz.

gelmesi bir etkinlik için https://docs.angularjs.org/guide/scope#integration-with-the-browser-event-loop

tarayıcının olay döngü bekler bakın. Olayın geri çağrısı yürütülür ... Geri arama yürütüldüğünde, tarayıcı JavaScript içeriğini terk eder ve DOM değişikliklerine göre görünümü yeniden oluşturur. Açısal, kendi olay işleme döngüsünü sağlayarak normal JavaScript akışını değiştirir. Bu, JavaScript'i klasik ve Açısal yürütme bağlamına böler ... Açısal, uygulama durumunu tipik olarak değiştiren [some] stimulusFn() işlevini yürütür. Açısal, $ digest döngüsüne girer. Döngü $ evalAsync kuyruğunu ve $ watch listesini işleyen iki küçük döngüye dayanır. $ Digest döngüsü, model stabilize olana kadar yinelemeyi sürdürür, yani $ evalAsync kuyruğu boş demektir ve $ watch listesi herhangi bir değişiklik tespit etmez. $ Watch listesi, son iterasyondan bu yana değişmiş olabilecek bir dizi ifadedir. Bir değişiklik tespit edilirse, tipik olarak DOM'ı yeni değerle güncelleyen $ watch işlevi çağrılır.

enter image description here

+0

Kapsamlı cevap –

+1

+1 İyi cevap. – shashwat

+1

Belgelere tam bağlantı: https://docs.angularjs.org/guide/scope – Vereb

İlgili konular