将数据推送到对象angularjs

时间:2016-04-29 10:38:39

标签: javascript angularjs coffeescript

我想制作对象的标签,并使用for循环传递给此标签的另一个对象的值。我的对象标签:

data4 = [{meal_id : '' ,amount : '' }]

for循环:

for i in [0...$scope.mealsList.length]
            data4[i].meal_id = $scope.mealsList[i].id 
            data4[i].amount = $scope.mealsList[i].amount

$scope.mealsList是我要复制的对象选项卡。

现在我有一个错误:

Cannot set property 'meal_id' of undefined

你能告诉我,我做错了什么?

ps:对不起我的语言技能,希望你能理解所有。

2 个答案:

答案 0 :(得分:2)

您迭代$scope.mealsList的长度,但从data4获取值。如果这些长度不同(这似乎是问题),则在解除引用data[i]时将会得到未定义。

我不太确定你想做什么,但似乎你想将$ scope.mealsList修改为data4,因为你要替换data4的所有值。

在这种情况下,您只需将mealList中的值修改为您想要的值并将data4设置为它。

var result = map($scope.mealsList, function(item) { return { meal_id: item.id, amount: item.amount };});
console.log('mapped: ', result);
data4 = result;

function map(arr, fn) {
  var res = [];
  for (var i = 0; i < arr.length; ++i) {
    res.push(fn(arr[i]));
  }
  return res;
}

答案 1 :(得分:0)

for i in [0...$scope.mealsList.length]{
            //if you want to delete some properties 'prop' form meaList object use this:
            //delete $scope.mealsList[i].prop0
            //delete $scope.mealsList[i].prop1
            data4.push($scope.mealsList[i])
}