使用AngularJS将值从ng-repeat的多个输入推送到数组中

时间:2017-02-25 20:34:47

标签: javascript angularjs arrays

我有以下数组:

$scope.variations = [
    {'nom':'',
     'preu':0,
     'grams':''
    },
    {'nom':'',
     'preu':0,
     'grams':''
    },
    {'nom':'',
     'preu':0,
     'grams':''
    }
];

我在前端展示它是这样的:

<div ng-repeat="vari in variations">
  <input type="text" class="inputmodal" ng-model="varinom">
  <input type="text" class="inputmodal" ng-model="varipreu">
  <input type="text" class="inputmodal" ng-model="varigrams">
</div> 

一旦我在数组的所有3个项目中填充了3个输入,我就会尝试将它们中的每一个推送到另一个数组中,如下所示:

<a ng-click="test()">TEST</a>

和JS:

 $scope.test = function(){
   $scope.singleorder = [];
   for(var i = 0; i < $scope.variations.length; i++)
     $scope.singleorder.push({
       'nom': $scope.variations[i].varinom,
       'grams': $scope.variations[i].varigrams,
       'preu': $scope.variations[i].varipreu,
     });

  console.log($scope.singleorder);
};     

在我在控制台中的结果中,我在控制台中有3个数组,但每个对象的值都是未定义的。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

您已正确设置ngModel。使用参考变量vari,如

<div ng-repeat="vari in variations">
  <input type="text" class="inputmodal" ng-model="vari.nom">
  <input type="text" class="inputmodal" ng-model="vari.preu">
  <input type="text" class="inputmodal" ng-model="vari.grams">
</div> 

并使用

 $scope.singleorder.push({
   'nom': $scope.variations[i].nom,
   'grams': $scope.variations[i].grams,
   'preu': $scope.variations[i].preu,
 });