2012-11-14 28 views
8

我是新來的角的js,並已到處尋找一個答案,爲什麼這是行不通的。

我有我的指示在這裏:

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

這手錶更改scope.carouselPreview,這是通過此功能更改:

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

,此功能無疑火災和​​變化scope.carouselPreview - 但手錶功能永遠不會啓動!

我意識到我可能是愚蠢的,但在這裏我已經看了遍,似乎完全沒有問題。

如果有人可以幫助我解決這個問題,今晚我會永遠愛你!

回答

13

第一個參數到$watch是一個字符串(在範圍的上下文中計算的),或者一個功能。所以,你想要的是:

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

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

+8

dnc253你是英雄先生!願主與千名童女祝福你,非常感謝你。 –

+0

謝謝。作爲一個方面的評論。注意關鍵短語「在範圍的上下文中評估」,所以如果你有一個「carouselPreview」的獨立範圍屬性,它不是你使用的字符串「scope.carouselPreview」,而是「carouselPreview」,因爲假定範圍。 – Blake