8

我是 Angular 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 - 但 watch 函数永远不会触发!

我意识到我可能在这里很愚蠢,但我已经看了一遍,看起来非常好。

如果今晚有人帮我解决这个问题,我会永远爱你!

4

1 回答 1

13

的第一个参数$watch是一个字符串(在范围的上下文中评估)或一个函数。所以你想要的是:

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

请参阅http://docs.angularjs.org/api/ng.$ro​​otScope.Scope#$watch

于 2012-11-14T18:43:01.633 回答