【问题标题】:Binding two inputs to the same model将两个输入绑定到同一个模型
【发布时间】:2014-07-17 15:42:33
【问题描述】:

As demonstrated in this plunker,我想要一个 两者都更新相同的$scope 变量,以及彼此。

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

【问题讨论】:

    标签: angularjs angular-ngmodel


    【解决方案1】:

    这是我将引用的example。问题是 range 是一个字符串值,而 number 是一个数字值。

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

    $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 指令解决了这个问题。

    【讨论】:

      【解决方案2】:

      不知道为什么会这样,但是当您将 type="number" 更改为 type="text" 时,它会起作用。

      我为 input type="number" 找到了这个解决方法,但似乎有点 hacky:

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

      【讨论】:

      • 听起来像一个 Angular 错误。我想我不需要微调器,因为我得到了范围。
      • 是的,我也是这么想的。如果没有上述 $watch 解决方法,它应该可以工作。有趣的发现。
      • 我认为 type="number" 本身存在问题,因为它期望 Number 但是当我们使用范围类型时它返回字符串。以及为什么范围类型适用于文本框
      • 范围返回文本,数字返回数字?这没有任何意义,范围可以不代表数字吗?
      • 不知道为什么它只是一个数字。找到这个:html5doctor.com/the-output-element/#valueAsNumber
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 2012-10-13
      • 1970-01-01
      • 2012-12-03
      • 2021-07-15
      • 1970-01-01
      • 2014-09-28
      相关资源
      最近更新 更多