ng-model没有更新值

时间:2017-09-21 04:59:36

标签: angularjs ionic-framework updates angularjs-ng-model

我正在开发一个基于角度1和离子1的离子应用程序,我有两个输入框,ng-model属性设置。基本上我想改变其他输入框的值,如果他们的任何一个值被更改。问题是它工作正常,当我更改input-box-1中的值时,input-box-2中的值会发生变化,但是当我更改input-box-2时,它不会反映输入的变化 - box-1,反之亦然。

我尝试使用控制台记录值,这些变化发生了,但不会被反映出来。

在此处找到代码片段

$scope.updateValues = function(option,values) {
    switch (option) {
      case "msrp_gp_parsent":
        $scope.msrp_gp_parsent = values;
        $scope.averagecost = (Math.abs((values - 100) * $scope.msrp_price)) / 100;
        $scope.standardcost = Math.abs((100 * $scope.averagecost) / ($scope.msrp_gp_parsent - 100));
        break;

      case "averagecost":
        $scope.averagecost = values;
        productDetailsDataFactory.getProductDetails().Pricing.AverageCost = values;
        $scope.msrp_gp_parsent = (($scope.msrp_price - values) / $scope.msrp_price) * 100;
        break;
      default:
    }
<input type="number" ng-model="averagecost" name=""
       ng-keyup="updateValues('averagecost',averagecost)">
<input type="number"
       ngkeyup="updateValues('msrp_gp_parsent',msrp_gp_parsent)" />

2 个答案:

答案 0 :(得分:0)

ng-keyup指令正在与ng-model指令作斗争。

ng-keyup指令替换为ng-change指令:

<input type="number" ng-model="averagecost"
       ̶n̶g̶-̶k̶e̶y̶u̶p̶ ng-change="updateValues('averagecost',averagecost)" />
<input type="number" ng-model="msrp_gp_parsent"
       ̶n̶g̶-̶k̶e̶y̶u̶p̶ ng-change="updateValues('msrp_gp_parsent',msrp_gp_parsent)" />

ng-modelng-keyup都将keyup事件侦听器放在元素上,并且无法保证首先执行哪些代码。 ng-change指令与ngModelController集成,只有在用户输入更改ng-model值后才能正确执行。

答案 1 :(得分:0)

这里有两个问题

  1. 问题是您使用的输入类型为数字,并且您使用了密钥启动事件。
  2. 需要在代码中处理NaN。如果用户输入&#34; - &#34;它不是一个数字。
  3. #1的解决方案是 - 使用微调器时不会触发键盘事件。改为使用改变事件。

    #2的解决方案是 - 在代码中处理NaN。

    Fiddle forked from yours to show - https://jsfiddle.net/mohanramphp/1ehf49he/24/