首页 > 解决方案 > AngularJS中的承诺后数组返回未定义

问题描述

我有这个来自角度的脚本。问题有时是 p.products 显示未定义。有时工作有时不是我已将承诺放在 settimeout 函数中但未解决。Packages Products Called 1每次都成功调用,但在 promise 运行后有时会显示 p.products 未定义。

.directive('packagesBrowser', function() {
    return {
      scope: {
        select: '='
      },
      templateUrl: 'packages-browser.html',
      controller: [
        '$scope', 'Packages', 'Store', 'Inventory', function($scope, Packages, Store, Inventory) {
          $scope.packageOptions = {};
          $scope.packages = Packages;
          console.log('Packages Products Called 1');
          Packages.$promise.then(function() {
            return Packages.forEach(function(p) {
              if (!p.products) {
                return;
              }
              $scope.packageOptions[p.id] = p.products.map(function(product) {
                return {
                  product_id: product.product.id,
                  quantity: product.quantity
                };
              });
              return console.log('Packages Products Called 2');
            });
          });
          return Store.$promise.then(function() {
            return $scope.available = function(id) {
              return (Inventory.list[id] && Inventory.list[id].available) || 0;
            };
          });
        }
      ]
    };
})

标签: javascriptangularjspromise

解决方案


看来您缺少一个参数..results在这种情况下

尝试这个:

Packages.$promise.then(function(results) {
        return results.data.forEach(function(p) {

推荐阅读