2013-04-01 16 views
8

Giriş elemanında "ng-model" kullandım ve krom denetçisiyle bu elemanı gözlemledim. Fakat giriş öğesinin her onxxx özelliği (değiş tokuş dahil) null. Ardından, AngularJS kullanıcı girişi tarafından tetiklenen "onchange" olayını nasıl yakalayabilir?AngularJS, 'onclick', 'onchange' gibi olayları dahili olarak nasıl yakalar?

+0

http://stackoverflow.com/questions/9682092/databinding-in-angularjs adresinden kontrol edebilirsiniz. –

+0

@fastreload Teşekkürler! Bu makaleyi okudum ama hala net değil. Bu makaleye göre, AngularJS kirli kontrol için $ apply() ve $ digest() kullanır. Ama bu işlevleri kim çağırıyor? 'Açısal' modül yoklama için setInterval() gibi bir şey kullanıyor mu? – firia2000

+0

"Sindirme" aşamalarını başlatan birkaç olay izleyicisi var, Stewie'nin cevabı biraz ayrıntı içeriyor. –

cevap

13

.

Köşeli, varsayılan olarak, input olayını dinler ve tarayıcı tarafından desteklenmediği takdirde, keydown + change olaylarına geri dönecektir.

Olaylar, jQlite'ın bağlama yöntemi ile bağlanır (tam jQuery'niz yoksa, bu durumda bağlantı yöntemi devralınır).

Kendinizi denetleyebileceğiniz örnek giriş öğesi, input [email] yönerge doküman sayfasında bulunur. Giriş olayını işlemekten sorumlu

Exact line in Angular source (v1.2.0rc1).

+0

Artık tamamen açık. Teşekkür ederim! – firia2000

+1

Neden jquery giriş olayını val() ile tetiklemiyor !!! Bu değişikliği başka nasıl doğru bir şekilde yayıyorsunuz? – tommybananas

+0

@ snowman4415 Bunu beğendi: http://stackoverflow.com/a/17110709/1095616 – Stewie

-1

kullanarak herhangi DOM düğüme olay dinleyicileri ekleyebilirsiniz:

node.addEventListener (eventName, listenerMethod, useCapture) Eğer addEventListener node.onchange için bir yöntem, daha önce atanmış iken

, etmelisin 'değişiklik' etkinliğine bir etkinlik dinleyicisi ekleyin veya 'tıklayın'.

bakınız: $destroy ve input: Chrome'un Olay Dinleyiciler sekmesinde, siz (ekli ng-modeli ile) standart metin giriş elemanı bunu ekli iki olay dinleyicisi olduğunu göreceksiniz incelemek, varsa https://developer.mozilla.org/en-US/docs/DOM/EventTarget.addEventListener

+1

Soru, özellikle angularjs hakkında, dom olay işleyicileri değil –

+0

Eh, AngularJS hala DOM ile javascript? Yani açısal DOM kullanarak bazı olay dinleyicileri eklemek, açısal bilmiyorum, ama sanırım olay belge öğeye ekli ve DOM olayı hangi hedefi alacağını filtrelemek için olay kabarcıklandırma kullanıyorlar. – KKetch

+0

Tabanda, evet zorunda. Ama aslında, sizin "varsaydığınız" şekilde çalışmaz. Neyin değiştiğini bulmak için kirli kontrol modelini kullanır. Bu konuda daha fazlasını okuyabilirsiniz: //stackoverflow.com/questions/9682092/databinding-in-angularjs –

İlgili konular