![](/img/trans.png)
[英]$scope.$watch a particular object inside an array - Angular JS controller
[英]angular js revert change of scope property inside a watch statement
我有一個選擇框,當它被改變時觸發http PUT。
<select ng-model='color'></select>
$scope.$watch('color', function(newValue, oldValue) {
$http.put('...', {color: newValue})
});
問題是,如果http請求因任何原因失敗,我希望選擇框恢復為之前的值。
$scope.$watch('color', function(newValue, oldValue) {
req = $http.put('...', {color: newValue})
req.error(function(){
$scope.color = oldValue // will probably cause the $watch to get triggered again (bad)
});
});
這可能會導致$ watch函數再次被觸發,這是不可取的,因為它會觸發不必要的PUT。
如何在不再觸發$ watch功能的情況下恢復該值?
使用ng-change
將ng-change
提交到服務器,如果put失敗,則還原為之前的值。
<select ng-model='color' ng-change="changeColor()"></select>
$scope.$watch('color', function(newValue, oldValue) {
$scope.previousColor = oldValue;
});
$scope.changeColor = function(){
$http.put('...', {color: $scope.color}).error(function(){
$scope.color = $scope.previousColor;
});
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.