我想知道是否有可能'阻止'表单域更新(输入,选择....),它是由于用户交互而变脏。 如果我更新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