2012-11-14 9 views
8

Ich bin neu in eckigen js und habe überall nach einer Antwort gesucht, warum dies nicht funktioniert.

Ich habe meine Direktive hier:

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

Diese Uhren für eine Änderung scope.carouselPreview, die durch diese Funktion geändert wird:

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

Diese Funktion definitiv Feuer und Änderungen scope.carouselPreview - aber die Uhr funktioniert nie!

Ich realisiere, dass ich hier wahrscheinlich dumm bin, aber ich habe alles untersucht und es scheint völlig in Ordnung.

Wenn jemand mir hilft heute Abend zu reparieren, werde ich dich für immer lieben!

Antwort

13

Der erste Parameter in der $watch ist eine Zeichenfolge (im Kontext des Bereichs ausgewertet) oder eine Funktion. Also, was Sie wollen, ist:

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

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

+8

dnc253 Sie ein Held Sir sind! Möge der Herr Sie mit tausend Jungfrauen segnen, vielen Dank. –

+0

Danke. Als Nebenkommentar. Beachten Sie die Schlüsselphrase "im Kontext des Bereichs ausgewertet". Wenn Sie also eine isolierte Bereichseigenschaft von "carouselPreview" haben, ist es nicht die Zeichenfolge "scope.carouselPreview", die Sie verwenden, sondern nur "carouselPreview", da der Bereich angenommen wird. – Blake

Verwandte Themen