2016-04-27 46 views
1

我想知道是否有可能'阻止'表单域更新(输入,选择....),它是由于用户交互而变脏。 如果我更新ng模型原语(即:将pippo从1设置为X),即使手动编辑控件,输入 也会更新。角度NG模型不会更新脏值

有可能防止?

demo page: 

http://plnkr.co/edit/ClXoS7YVcEDtcApsNpde 

输入栏每X秒计数一次。 如果我输入“AAA”,我想更新停止,因为 输入它是“脏”由于用户交互。

+0

只需在'this.update'函数内添加验证 – daymannovaes

回答

0

如果我有这个问题,也许这就是你想要做的?

$scope.$watch("pippo", function(){ 
    if($scope.pippotmp != $scope.pippo) 
    $scope.useredited = true; 
}); 

修订答

plunker

你可以继续从输入改变分离模式......在临时变量

+0

nope,我不能取消间隔,AAA是用户输入,可以是任何东西。事情是“用户有修改输入”“用户没有修改输入值” – user3804873

+0

看到更新的跳闸,也许我现在得到它 – daniel

0

输入元素上添加ngChange属性,

Update Plunker

<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设置一个标志,指示是否输入已经被用户覆盖

0

我可能会得到这个问题错了,但如果我理解正确的话,那么NG-模型的选择是你在找什么。

例如,您可以更新模型,只有当用户离开输入 NG-模型选项=“{updateOn:‘模糊’}”

您可以在文档阅读更多关于它:https://docs.angularjs.org/api/ng/directive/ngModelOptions