2012-11-14 7 views
8

Jestem nowy dla kątowego js i szukałem wszędzie odpowiedzi, dlaczego to nie działa.Funkcja zegarka w dyrektywie nie jest wyzwalana w trybie Angular JS

mam dyrektywę tutaj:

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

Ten zegarki o zmianę scope.carouselPreview, która zmienia się dzięki tej funkcji:

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

Funkcja ta zdecydowanie pożarów i zmian scope.carouselPreview - ale funkcja zegarka nigdy nie uruchamia się!

Zdaję sobie sprawę, że prawdopodobnie jestem tu głupi, ale wyglądam na wszystko i wydaje mi się, że wszystko jest w porządku.

Jeśli ktokolwiek pomoże mi to naprawić, będę cię kochać na zawsze!

Odpowiedz

13

Pierwszy parametr w $watch jest ciągiem (ocenianym w kontekście zakresu) lub funkcją. Więc to, co chcesz:

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

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

+8

dnc253 jesteś pan bohaterem! Niech Pan błogosławi cię tysiącem dziewic, dziękuję bardzo. –

+0

Dziękuję. Jako komentarz boczny. Zwróć uwagę na kluczową frazę "ocenianą w kontekście zakresu", więc jeśli masz izolowaną właściwość zakresu "karuzela", to nie jest to ciąg "scope.carouselPreview", którego używasz, ale po prostu "karuzela", ponieważ zakłada się zakres. – Blake

Powiązane problemy