0

我有模型,我观察这个模型,看看绑定在 $watch 中的函数的一些变化。而且我有绑定到 ngClick 的函数,它改变了模型。我需要能够防止在 ngClick 中调用模型侦听器,因为我不想跟踪该更改,但是如果模型以其他方式更改,除了 ngClick 绑定函数,我希望侦听器工作。

但我不想解除监听器的绑定,我只想让它在当前时刻停止执行。

例子:

$scope.AlertIfChange = function(){
 alert('model changes!');
};

$scope.watch(model, AlertIfChange, true);

$scope.clickHandler = function(){
 $scope.model = "changed by click";
 -- some stuff to prevent AlertIfChange invocation --
};
4

2 回答 2

0

你可以这样做:

$scope.AlertIfChange = function(){
    if(!$scope.clickChanged){           
        alert("I was not changed by click");
    }
    else{
        alert("I was changed by click");
    }
};
$watch(model, AlertIfChange, true);

$scope.clickChanged = false;

$scope.clickHandler = function(){
    $scope.model = "changed by click";
    $scope.clickChanged = true;
}
于 2013-09-27T14:32:41.970 回答
0

如果您在很多地方都需要此功能,请考虑编写一个类似于 ng-click 的指令,但在满足特定条件之前不会触发回调。

于 2013-09-27T15:36:59.430 回答