我想知道是否有可能'阻止'表單域更新(輸入,選擇....),它是由於用戶交互而變髒。 如果我更新ng模型原語(即:將pippo從1設置爲X),即使手動編輯控件,輸入 也會更新。角度NG模型不會更新髒值
有可能防止?
demo page:
http://plnkr.co/edit/ClXoS7YVcEDtcApsNpde
輸入欄每X秒計數一次。 如果我輸入「AAA」,我想更新停止,因爲 輸入它是「髒」由於用戶交互。
我想知道是否有可能'阻止'表單域更新(輸入,選擇....),它是由於用戶交互而變髒。 如果我更新ng模型原語(即:將pippo從1設置爲X),即使手動編輯控件,輸入 也會更新。角度NG模型不會更新髒值
有可能防止?
demo page:
http://plnkr.co/edit/ClXoS7YVcEDtcApsNpde
輸入欄每X秒計數一次。 如果我輸入「AAA」,我想更新停止,因爲 輸入它是「髒」由於用戶交互。
您可以使用ngModelController來判斷輸入是否髒。 https://docs.angularjs.org/api/ng/directive/ngModel
修改您的plunker到http://plnkr.co/edit/oJMrQZLugnzisqdXScvN?p=preview 更新功能看起來像
this.update = function() {
if(!$scope.frmPippo.pippo.$dirty)
$scope.pippo += 1;
}
完美,工作像一個魅力 – user3804873
如果我有這個問題,也許這就是你想要做的?
$scope.$watch("pippo", function(){
if($scope.pippotmp != $scope.pippo)
$scope.useredited = true;
});
修訂答
你可以繼續從輸入改變分離模式......在臨時變量
nope,我不能取消間隔,AAA是用戶輸入,可以是任何東西。事情是「用戶有修改輸入」「用戶沒有修改輸入值」 – user3804873
看到更新的跳閘,也許我現在得到它 – daniel
輸入元素上添加ngChange
屬性,
<input type=text ng-model="pippo" ng-change="userChanged()"/>
//controller
$scope.pippo = 1;
$scope.isUserChanged = false;
$scope.counter= 1;
$scope.userChanged = function(){
$scope.isUserChanged = true;
}
this.update = function() {
if(!$scope.isUserChanged){
$scope.pippo += 1;
}
}
$interval(this.update, 3000);
userChanged
將被稱爲當用戶打字,但是當pippo
由控制器等方法改變不會被調用,這樣我們就可以在userChanged
設置一個標誌,指示是否輸入已經被用戶覆蓋
我可能會得到這個問題錯了,但如果我理解正確的話,那麼NG-模型的選擇是你在找什麼。
例如,您可以更新模型,只有當用戶離開輸入 NG-模型選項=「{updateOn:‘模糊’}」
您可以在文檔閱讀更多關於它:https://docs.angularjs.org/api/ng/directive/ngModelOptions
只需在'this.update'函數內添加驗證 – daymannovaes