Был попыткой ударить мою голову вокруг этого весь день. Надеюсь, некоторые новые глаза могут получить это !!!Angular.forEach влияет только на последний ряд
В основном у меня есть область: gridOrder, которая содержит (ProdID: & Количество :). Я использую идентификатор продукта для получения данных из БД (Количество & Зарезервированное количество).
Затем я передаю это функции, которая вычисляет некоторые данные и добавляет необходимые данные в другую область под названием 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;
}
};
};
Удивительно, я попробовал это безрезультатно, попробовал еще раз по вашему запросу, и все это прекрасно! Благодаря!!! –
Добро пожаловать. Если вам нужно, вы можете прочитать о закрытии javascript: http://www.sitepoint.com/javascript-closures-demystified/, особенно о проблемах закрытия с циклами. –
Привет, я посмотрю. –