在我推动的数组中获得不同的价值

时间:2017-06-02 06:48:40

标签: angularjs arrays

我正在开展角度项目。我面临的错误是所有数组中显示的对象的最后一个值。

$scope.products = [{"product_id":"1", "price:80"},{"product_id":"2", "price:90"}]

现在我正在使用angular forEach方法。实际上我有很多东西我产品数组所以我使用一个订单数组,我只提供id和值

angular.forEach($scope.products, function(value, key){
   $scope.order.product_id = value.product_id;
   $scope.order.price = value.price;
   $scope.orderProducts.push($scope.order);

})

但我得到

$scope.orders = [{"product_id":"2", "price:90"},{"product_id":"2", "price:90"}]
我在我的控制台上看到了

objet{{"product_id":"1", "price:80"}

但是当我打开然后我得到了

 product_id:"2",
 price: "90"

3 个答案:

答案 0 :(得分:2)

angular.foreach($scope.products, function(value, key){
   $scope.order.product_id = $scope.products.product_id;
   $scope.order.price = $scope.products.price;
   $scope.orderProducts.push($scope.order);

})

首先,您应该使用函数内部的值来获取该索引处的产品值。

angular.foreach($scope.products, function(value, key){
   $scope.order.product_id = value.product_id;
   $scope.order.price = value.price;
   $scope.orderProducts.push($scope.order);

})

接下来,您将在迭代中更改同一个对象,即$ scope.order 这意味着在下一次迭代中分配新值时,将更改orderProducts数组中推送的第一个订单。 您应该创建一个局部变量,然后将其推入数组中。

angular.foreach($scope.products, function(value, key){
   val orderObj = {};
   orderObj.product_id = value.product_id;
   orderObj.price = value.price;
   $scope.orderProducts.push(orderObj);

})

答案 1 :(得分:1)

angular.foreach($scope.products, function(value, key){
   $scope.order.product_id = $scope.products.product_id;
   $scope.order.price = $scope.products.price;
   $scope.orderProducts.push($scope.order);

})

在函数中,您使用$ scope.products而不是迭代的值和键。其他一些事情在你的问题中并不清楚,所以如果你得到纠正并仍然有问题,可以回顾一下这个问题,以确保你包含足够的细节(理想情况下运行样本)

答案 2 :(得分:0)

这是你做错了什么

angular.foreach($scope.products, function(value, key){
   $scope.order.product_id = $scope.products.product_id;
   $scope.order.price = $scope.products.price;
   $scope.orderProducts.push($scope.order);
});

重新对抗
$scope.orderProducts = []
$scope.products = [{"product_id":"1", "price":80},{"product_id":"2", "price":90}]
angular.forEach($scope.products, function(value, key){
   $scope.orderProducts.push({
        product_id : value.product_id,
        price : value.price
   });
});