我想知道是否可以“防止”更新表单字段(输入,选择....),因为用户交互它是脏的。 如果我更新ng-model原语(即:将pippo从1设置为X)输入 即使我手动编辑控件也会更新。
可以防止这种情况吗?
demo page:
http://plnkr.co/edit/ClXoS7YVcEDtcApsNpde
输入字段每X秒计数一次。 如果我输入“AAA”我想更新STOP,因为 输入由于用户交互而“脏”。
答案 0 :(得分:0)
如果我得到了问题,那么这就是你想要做的事情?
$scope.$watch("pippo", function(){
if($scope.pippotmp != $scope.pippo)
$scope.useredited = true;
});
更新回答
您可以将模型与输入更改分开......在临时变量中
答案 1 :(得分:0)
在输入元素上添加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
中设置一个标志来指示是否输入已被用户覆盖
答案 2 :(得分:0)
您可以使用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;
}
答案 3 :(得分:0)
我可能会提出错误的问题,但如果我理解正确,那么ng-model-option就是你要找的。 p>
例如,您只能在用户离开输入时更新模型 ng-model-options =“{updateOn:'blur'}”
您可以在文档中详细了解它:https://docs.angularjs.org/api/ng/directive/ngModelOptions