2012-11-14 29 views
8

Açgözlü j'ler için yeniyim ve neden bu işe yaramadığına bir cevap bulmak için her yere bakıyorum.

Benim burada bir direktif var:

.directive('carrouselPreview', function() { 
    return function (scope, element, attrs) { 
     scope.$watch(scope.carouselPreview, function() { 
      alert('changed'); 
     }, true); 
    } 
}); 

Bu, bu işlevi aracılığıyla değiştirilir scope.carouselPreview bir değişiklik için saatler:

$scope.showPreview = function(ind){ 
    $scope.carouselPreview = ind; 
} 

Bu fonksiyon kesinlikle yangınlar ve değişikliklere scope.carouselPreview - ama saat işlevi asla ateş etmiyor!

Burada muhtemelen aptal olduğumu farkettim ama her yere baktım ve gayet iyi görünüyor.

Bu gece bunu düzeltmeme yardımcı olursa, seni sonsuza kadar seveceğim!

cevap

13

$watch'un ilk parametresi, (kapsam kapsamında değerlendirilen) bir dize veya bir işlevdir. Yani ne istiyorum: bir kahraman efendim dnc253

scope.$watch("carouselPreview", function() { 
    alert('changed'); 
}, true); 

http://docs.angularjs.org/api/ng.$rootScope.Scope#$watch

+8

bakın! Efendimiz bin bakireyle sizi korusun, çok teşekkür ederim. –

+0

Teşekkür ederim. Bir yan yorum olarak. "Kapsam bağlamında değerlendirilen" anahtar ifadesine dikkat edin. Dolayısıyla, "carouselPreview" in "" kapsamı "özelliğiniz var ise, kullandığınız" scope.carouselPreview "dizgesi değil, yalnızca" carouselPreview "ifadesi de kapsam dahilindedir. – Blake