2012-11-14 29 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