AngularJS - 在聚焦

时间:2015-05-20 07:23:34

标签: angularjs

我有一个如下所示的数据对象:

$scope.data = { value1: 'anyValue', value2: 'anyValue'};

此数据对象将每秒通过轮询进行更新。

在视图中,我在输入字段中显示数据,如:

<input type="number" ng-model="data.value1"/>
<input type="number" ng-model="data.value2"/>

用户应该能够关注其中一个输入字段并输入值。现在这是不可能的,因为当数据对象更新时,字段中所做的每个更改都将被覆盖。

我不想暂停整个投票过程,因为其他输入字段仍应显示其更新值。

在聚焦时,仅暂停聚焦输入字段的绑定的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我建议你做以下事情:

<input type="number" ng-model="data.value1" ng-focus="onFocus('value1')" ng-blur="onBlur('value1')"/>
<input type="number" ng-model="data.value2" ng-focus="onFocus('value2')" ng-blur="onBlur('value2')"/>

在您的控制器中,例如:

$scope.onFocus = function(key) {        
    $scope.preventChange = key;
}; 

$scope.onBlur = function(key) {        
    $scope.preventChange = null;
};

然后,无论何时进行轮询和更新,请检查您尝试更新的数据密钥是否为$scope.preventChange中的数据密钥,如果是,请不要更改。