2012-11-14 13 views
8

Sono nuovo di angular js e ho cercato ovunque una risposta al motivo per cui questo non funziona.

ho la mia direttiva qui:

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

Questo orologi per un cambiamento a scope.carouselPreview, che viene modificato tramite questa funzione:

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

Questa funzione sicuramente incendi e cambiamenti scope.carouselPreview - ma la funzione orologio non si accende mai!

Mi rendo conto che probabilmente sono stupido qui ma ho guardato dappertutto e sembra perfettamente a posto.

Se qualcuno mi aiuta a risolvere questo stasera ti amerò per sempre!

risposta

13

Il primo parametro nello $watch è una stringa (valutata nel contesto dell'oscilloscopio) o una funzione. Quindi, ciò che si vuole è:

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

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

+8

dnc253 sei un signore eroe! Possa il Signore benedirti con mille vergini, grazie mille. –

+0

Grazie. Come commento a parte. Si noti la frase chiave "valutata nel contesto dell'ambito", quindi se si dispone di una proprietà di ambito isolata di "carouselPreview" non è la stringa "scope.carouselPreview" che si utilizza ma solo "carouselPreview" poiché si presume lo scope. – Blake

Problemi correlati