我正在开展角度项目。我面临的错误是所有数组中显示的对象的最后一个值。
$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"
答案 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
});
});