2013-09-27 41 views
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 -- 
}; 

回答

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; 
} 
+0

是的,的確如此。目前我以這種方式實現,但我很好奇 - 是否有可能以某種沒有標誌的本地方式來實現這一點。 –

+0

沒有。我不這麼認爲。 – AlwaysALearner

0

如果你在很多地方需要此功能,考慮寫這就像NG單擊一個指令,但直到滿足特定條件纔會觸發回調。