1
一直試圖說唱我的頭這一整天。希望有一些新的眼睛可以得到它!Angular.forEach隻影響最後一行
基本上我有一個範圍:gridOrder其中包含(ProdID:& Quantity :)。我正在使用產品ID從DB獲取數據(數量爲&預留數量)。
然後,我將它傳遞給一個計算某些數據的函數,並將所需數據添加到名爲prodOrder []的另一個作用域。 prodOrder被賦予與等價的gridOrder相同的索引(即,如果創建了gridOrder [2],則創建prodOrder [2])。
這一切工作正常,如果我按時間順序工作,如gridOrder [0],然後gridOrder [1]但如果我在gridOrder [x]並返回到gridOrder [xa](a> 1)它不會更新gridOrder [xa]上的值。
如果有人可以提供任何見解,將不勝感激。
代碼現在工作
$scope.reservedStockFunction = function(){
angular.forEach($scope.gridOrder, function(value, key){
$scope.rvalue = value;
$scope.rkey = key;
console.log(value);console.log(key);
//Check stock.
var reservedStockRequest = {prodID: value.prodID, prod_quantity: "", prod_reserved_quantity: "", table: "products"};
//Send requst
search_given_where.request(reservedStockRequest).success(function(data){
updValues(data, key, value);
});
});
function updValues(data, key, value){
console.log(data);
var i = key;
if (typeof $scope.prodOrder[i] == "undefined" || !($scope.prodOrder[i] instanceof Array)) {
$scope.prodOrder[i] = {};
}
//Set Quantity variable.
if (value.quantity !== undefined){
var qty = value.quantity;
} else {
var qty = 0;
}
//Set Product Quanity Variable.
var prodQty = data[0].prod_quantity;
//Set Reserved Product Quantity variable.
var prodRsvdQty = data[0].prod_reserved_quantity;
//Reserved quantity = current reserved quantity + quantity.
prodRsvdQty = +prodRsvdQty + +qty;
//If reserved quantity is greater than stock.
if(prodRsvdQty > prodQty){
var reservedStockMessage = "Product:" + value.prodID + " Stock:" + prodQty + " Reserved Stock:" + prodRsvdQty;
//Let user know.
$scope.reservedStockMessage[i] = {};
$scope.reservedStockMessage[i].message = reservedStockMessage;
//Show reserved stock options.
$scope.reservedStock.show = true;
//Create array to update product table.
$scope.prodOrder[i].prodID= value.prodID;
$scope.prodOrder[i].prod_reserved_quantity = prodRsvdQty;
$scope.prodOrder[i].reserved = 1;
//Set reserved on gridOrder array.
value.reserved="1";
data = null;
key = null;
value = null;
qty = null;
prodQty = null;
prodRsvdQty = null;
//If not.
} else if (prodRsvdQty < prodQty){
$scope.reservedStockMessage[i] = {};
//Create array to update product table.
$scope.prodOrder[i].prodID= value.prodID;
$scope.prodOrder[i].prod_reserved_quantity = prodRsvdQty;
$scope.prodOrder[i].reserved = 0;
//Set Reserved on gridOrder array.
value.reserved="0";
data = null;
key = null;
value = null;
qty = null;
prodQty = null;
prodRsvdQty = null;
}
};
};
令人驚歎的,我試過這個無濟於事,再次嘗試在您的要求下,所有的都是完美的!謝謝!!! – 2015-04-06 13:36:30
不客氣。如果你需要,你可以閱讀關於JavaScript閉包:http://www.sitepoint.com/javascript-closures-demystified/,特別是關於循環的關閉問題。 – 2015-04-06 13:52:51
乾杯,我會看看。 – 2015-04-06 14:45:25