Bazen kodumda kullanmam gerekiyor $scope.$apply
ve bazen "zaten devam ediyor" hatası veriyor. Bu yüzden, bunun etrafında bir yol bulmaya başladım ve şu soruyu buldum: AngularJS: $ kapsamını çağırırken zaten devam eden $ özet hatasını önle. $ Apply () . Ancak yorumlarda (ve açısal wiki'de) şunları okuyabilirsiniz:
Bunu yapmayın (! $ Kapsam. $$ aşama) $ kapsam. $ Apply (), bu, $ kapsamınızın. $ Apply () çağrı yığınında yeterince yüksek olmadığı anlamına gelir.
Şimdi iki sorum var:
- Bu tam olarak neden bir anti-modeldir?
- $ Scope'u güvenle nasıl kullanabilirim. $ Apply?
"Özet zaten devam ediyor" hatasını önlemek için başka bir "çözüm" $ zaman aşımı kullanıyor gibi görünüyor:
$timeout(function() {
//...
});
Gitmenin yolu bu mu? Daha güvenli mi? İşte asıl soru şu: "Halihazırda devam etmekte olan bir özet" hatası olasılığını tamamen nasıl ortadan kaldırabilirim?
Not: Eşzamanlı olmayan açısal olmayan js geri aramalarında yalnızca $ kapsam kullanıyorum. $ Apply. (bildiğim kadarıyla bunlar $ kapsam kullanmanız gereken durumlar. Değişikliklerinizin uygulanmasını istiyorsanız $ uygulayın)
scope
açısal içeriden mi yoksa açısal dışından mı manipüle ediyorsan her zaman bilmelisin . Yani buna göre aramanız gerekip gerekmediğini her zaman bilirsinizscope.$apply
. Ve hem açısal hem de açısal olmayanscope
manipülasyon için aynı kodu kullanıyorsanız, yanlış yapıyorsunuz, her zaman ayrılmalıdır ... yani temelde kontrol etmeniz gereken bir durumla karşılaşırsanızscope.$$phase
, kodunuz doğru şekilde tasarlanmıştır ve bunu 'doğru şekilde' yapmanın her zaman bir yolu vardır