【发布时间】:2015-08-29 20:40:33
【问题描述】:
我正在发送一个 ajax 请求以从服务器获取数据并将其存储在本地变量中。这是内部服务。然后在控制器中,我使用承诺在需要时获取数据。这是第一次工作,因为没有检测到缓存并返回承诺,但下一次我没有从服务函数返回任何承诺,因此出现 javascript 错误。
我在服务中的功能是:
getProductDetails: function(product) {
if(!productDetailsArr[product.id]) {
if (!promiseProductDetails) {
// $http returns a promise, which has a then function, which also returns a promise
promiseProductDetails = $http.get(product.id + '/productdetails.json').then(function(response) {
productDetailsArr[product.id] = response;
return productDetailsArr[product.id];
});
}
// Return the promise to the controller
return promiseProductDetails;
} else {
return productDetailsArr[product.id];
}
}
在控制器中,我使用以下代码调用了上述函数:
ServiceData.getProductDetails($scope.product).then(function(data) {
$scope.productDetails = data;
});
所以在第二次之后我得到了 JS 错误:
TypeError: ServiceData.getProductDetails(...).then is not a function
知道如何解决这个问题。
【问题讨论】:
标签: javascript angularjs