Hemen hemen "tavşan-delikli" açısal bir soruya rastladım cevabı bulamadım. $scope
belgelerinden, bir kapsamın imha edilmesinden hemen önce çağrılan "$destroy"
'da bir olay işleyicisini kaydedebilirsiniz. Bu şekilde, şöyle olay işleyicileri sildirebilirsin:
var deregister = $scope.$on('myCustomEvent', function() {
// do some crazy stuff
});
$scope.$on('$destroy', function() {
deregister();
});
Ancak $scope.$on('$destroy', ...)
kendi işleyicisi oluşturmanız gerekir. Bu otomatik olarak yok edildi mi yoksa yok etmek için aşağıdaki gibi bir şey yapmak zorunda mı?
var deregister = $scope.$on('myCustomEvent', function() {
// do some crazy stuff
});
var deregisterDestroy = $scope.$on('$destroy', function() {
deregister();
deregisterDestroy();
});
Evet, imha edilir - elbette işleyicinin dışına herhangi bir şey atıfta bulunursa (ve böylece kapandığında sahip olduğu her şey) tabiki tahsis edilmeyecektir (her yerde olduğu gibi). –
Takip eden sorular şu şekilde olurdu: (a) bunu kayıt altına almak zorunludur ve (b) eğer öyleyse, yukarıda yazdığım şekilde kayıt dışı bırakabilir misiniz? – jdotjdot
Naa, sadece sonsuz özyineniz var - kapsamı yok edersiniz. Eminim çok yakında birileri daha iyi ve detaylı bir cevap verecektir :) –