【问题标题】:Updating a value based on a range of inputs in AngularJS根据 AngularJS 中的一系列输入更新值
【发布时间】:2015-06-03 10:59:03
【问题描述】:

我在这里基本上想要实现的是剩余金额随着用户在一系列文本字段中输入金额而减少。

这些文本字段是由一个角度循环生成的,它的剩余金额变量是我需要更新的,因此,例如,如果新鲜剩余金额为 40,则用户在字段 1 中输入 10,那么剩余金额将变为 30直到 0 点。

    <div class="row">
            <div class="col text-center error">
                <span ng-model="remainingAmount">{{ remainingAmount }}</span> left to distribute
            </div>
        </div>
    </div>

    <div class="list">

        <div class="item item-button-right" ng-repeat="user in users">
            {{ user.first_name }} {{ user.last_name }}
            <span class="item-note">
                <input type="text"  />
            </span>
        </div>

    </div>

Plunk:http://plnkr.co/edit/NmwTfGNC7jJyRL1kADCJ

【问题讨论】:

  • 请创建一个 Plunkr 或 JSFiddle
  • 用 plunk 的链接更新了问题

标签: javascript angularjs angularjs-ng-repeat angular-ngmodel


【解决方案1】:

尝试将输入绑定到您的模型。然后你可以计算其中一个输入变化的剩余部分:

HTML:

<input type="text" ng-model="user.amount" ng-change="calc()" />

JS:

$scope.calc = function() {
  var total = 0, user;
  for (user in $scope.users) {
    total += parseInt($scope.users[user].amount, 10) || 0;
  }
  $scope.remainingAmount = Math.max($scope.startAmount - total, 0);
} 

看到这个plunker

【讨论】:

    【解决方案2】:

    一个没有验证或任何东西的简单示例(不知道为什么将对象用作数组..所以我切换到使用数组 - 还将输入从 text 更改为 number 以避免不得不重新解析数字,因为角度会将属性设置为字符串):

    plunkr

    var app = angular.module('plunker', []);
    
    app.controller('MainCtrl', function($scope) {
        var maxAmount = 40;
        $scope.remainingAmount = maxAmount;
        $scope.users = [
            {'id':1, 'first_name':'Joe', 'last_name': 'Bloggs', amountUsed: 0},
            {'id':2, 'first_name':'Chris', 'last_name': 'Scott', amountUsed: 0}
        ];
    
        $scope.updateUsage = function(){
          var totalUsed = 0;
    
          for (var i = 0; i < $scope.users.length; i++) {
            var u = $scope.users[i];
            totalUsed += u.amountUsed;
          }
    
          $scope.remainingAmount = maxAmount - totalUsed;
        }
    });
    

    【讨论】:

    • 那个对象作为一个数组只是我的错字:) 这非常有效!谢谢
    • 对此还有一个问题,我如何将输入设置为当前的默认值 0,如果一个已更新而其他未更新,那么这会导致剩余总变量中的 NaN。我尝试在文本字段上设置 value=0 但这似乎没有什么不同。
    • 如果你运行 plunkr 就是它的工作原理,它们默认为 0
    猜你喜欢
    • 2014-04-05
    • 1970-01-01
    • 2021-04-18
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多