javascript - 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;
};
});
}
]
};
})
解决方案
看来您缺少一个参数..results
在这种情况下
尝试这个:
Packages.$promise.then(function(results) {
return results.data.forEach(function(p) {
推荐阅读
- package - 如何在没有管理员权限的情况下运行使用 NSIS 创建的 App 包
- python - 多模块的Python程序的入口点是什么?
- html - 有一个
- mqtt - 在 mqtt 客户端处理背压数据传输
- php - Laravel 5.6 - 用户未通过身份验证
- javascript - Javascript:在滚动时添加然后删除超过某个点的类
- angular - Angular 5 单元测试路由器导航
- c# - 谷歌云 API 没有返回任何响应
- ios - 如何强制计数器从 01 而不是 1 开始(Swift)
- c++ - Visual Studio 2017 中的 Intellisense 可以建议包含 C++ 标头吗?