将两个输入绑定到同一模型

时间:2014-07-17 15:42:33

标签: angularjs angular-ngmodel

As demonstrated in this plunker,我想要一个< input type =" number" /> < input type =" range" />它们都更新相同的$scope变量,以及彼此。

现在,当我更新一个输入时,$ scope变量被更改,但另一个范围的值被消隐。我只需要使用data-ng-model绑定一个并在另一个上使用data-ng-change吗?有更清洁的解决方案吗?

2 个答案:

答案 0 :(得分:9)

这是我要引用的example。问题是范围是字符串值,而数字是数字值。

在控制器中实例化变量并编写处理转换的函数

$scope.data = 10;

$scope.setDataAsNumber = function() {
  $scope.data = parseInt($scope.data, 10);
}

创建绑定到$scope.data

的所有元素
<input type="text" ng-model="data" ng-change="setDataAsNumber()">
<br>
<input type="number" ng-model="data">
<br>
<input type="range" ng-model="data" ng-change="setDataAsNumber()">
<br>
{{ data }}

我已经使用ng-change指令解决了这个问题。

答案 1 :(得分:3)

不确定为什么会这样,但是当你将type =“number”改为type =“text”时,它就可以了。

我找到了输入type =“number”的解决方法,但似乎有点hacky:

$scope.$watch('MyNumber',function(number) {
  $scope.MyNumber = Number(number);
});