Javascript 如何使用AngularJS动态获取文本框值

Javascript 如何使用AngularJS动态获取文本框值,javascript,angularjs,Javascript,Angularjs,我按照以下教程在Angular中添加了两个值; 但现在我必须对ng repeat中的动态文本框值求和 我有以下代码 HTML代码 ...... <table> <tr> <th>Name</th> <th>Days</th> </tr> <tr ng-r

我按照以下教程在Angular中添加了两个值;

但现在我必须对ng repeat中的动态文本框值求和

我有以下代码

HTML代码

 ......
        <table>
            <tr>
                <th>Name</th>
                <th>Days</th>
            </tr>
            <tr ng-repeat="si in serImp">
                <td>{{si.Name}}</td>
                <td><input type="number" ng-model="si.Days" /></td>
            </tr>
        </table>
        .......
        <button ng-click="sum()">Calculate</button>
        .......
.........
        $scope.serImp = [];
        $scope.serImp = data;
                // here data is object contain multiple Name+Durations e.g. 
        /*data = 
        [0]
   Name:"first"
   Days: 1
[1]
   Name:"second"
   Days: 2
[2]
   Name:"third"
   Days: 3*/

         $scope.sum = function () {
// sum code goes here
    }
    ........
$scope.totalDays = function(){
  var totalDays = 0;
  angular.forEach( $scope.serImp, function(si){
     if(si.Days && !isNaN(si.Days)){
        totalDays += Number(si.Days);
     }
  })
}

我的问题是:如何从ng model=“si.Days”中获取值/数字的总和,使用reduce对所有天数进行汇总。 使用ng模型修改值时,您正在操作
$scope.serImp
数组。然后可以使用这些值来计算总和

$scope.sum = function () {
     return $scope.serImp.reduce(function(prv, cur) { 
         return prv.Days + cur.Days; 
     });
}
Reduce获取一个数组,并通过对其所有元素应用一个函数将其缩减为一个值。在我们的例子中,只是简单地把所有的日子加起来


我将创建一个函数,该函数将返回所有天数总和,并将直接绑定到html

{{totalDays()}}
代码

 ......
        <table>
            <tr>
                <th>Name</th>
                <th>Days</th>
            </tr>
            <tr ng-repeat="si in serImp">
                <td>{{si.Name}}</td>
                <td><input type="number" ng-model="si.Days" /></td>
            </tr>
        </table>
        .......
        <button ng-click="sum()">Calculate</button>
        .......
.........
        $scope.serImp = [];
        $scope.serImp = data;
                // here data is object contain multiple Name+Durations e.g. 
        /*data = 
        [0]
   Name:"first"
   Days: 1
[1]
   Name:"second"
   Days: 2
[2]
   Name:"third"
   Days: 3*/

         $scope.sum = function () {
// sum code goes here
    }
    ........
$scope.totalDays = function(){
  var totalDays = 0;
  angular.forEach( $scope.serImp, function(si){
     if(si.Days && !isNaN(si.Days)){
        totalDays += Number(si.Days);
     }
  })
}