2015-04-05 4 views
1

Был попыткой ударить мою голову вокруг этого весь день. Надеюсь, некоторые новые глаза могут получить это !!!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; 
      } 
     }; 
    }; 

ответ

1

Джоша, вы используете неправильные параметры для обратного вызова updValues.

Не могли бы вы попробовать использовать:

search_given_where.request(reservedStockRequest).success(function(data){ 
    updValues(data, key, value); 
}); 

Чтобы использовать контекстное значение из ключа и значения.

+0

Удивительно, я попробовал это безрезультатно, попробовал еще раз по вашему запросу, и все это прекрасно! Благодаря!!! –

+0

Добро пожаловать. Если вам нужно, вы можете прочитать о закрытии javascript: http://www.sitepoint.com/javascript-closures-demystified/, особенно о проблемах закрытия с циклами. –

+0

Привет, я посмотрю. –

Смежные вопросы