gpt4 book ai didi

javascript - 在我的情况下如何设置 Angular http 调用

转载 作者:行者123 更新时间:2023-12-03 10:31:57 25 4
gpt4 key购买 nike

我正在尝试设置一个服务来设置http请求数据。我需要在一个 Controller 中设置数据,并在加载该页面时获取另一个 Controller 中的数据我有类似的东西

angular.module('myApp').service('testService', ['Product','$q',
function(Product, $q) {
var products, targetProduct;
var deferred = $q.defer();

Product.query({
Id: 123
}, function(products) {
targetProduct = products[0];
deferred.resolve(products);
})

var getTargetProduct = function() {
var deferredtwo = $q.defer();

// return deferredtwo.promise;
deferred.promise.then(function(){
deferredtwo.resolve(targetProduct);
})
return deferredtwo.promise;
}

var setTargetProduct = function(targetProduct) {
targetProduct = targetProduct
}

return {
setTargetProduct: setTargetProduct,
getTargetProduct: getTargetProduct,
productPromise : deferred.promise
};
}
]);

导航 Controller

  testService.productPromise.then(function(products, $rootscope){
$scope.products= products;
$scope.targetProduct = products[0];
})

//when user click the project ng-click = setTargetProduct(product);
$scope.setTargetProduct = function(targetProduct) {
$rootscope.$broadcast('newProduct' targetProduct);
testService.setTargetProduct(targetProduct)
}

产品详细信息 Controller

 testService.getTargetProduct().then(function(targetProduct) {
$scope.$on('newProduct', function(newProduct){
console.log(newProduct) <---works if both controllers are loaded but undefined if user is not in the product detail page.
})
$scope.targetProduct = targetProduct;
})

但是,如果当用户单击 setTargetProduct 时尚未加载产品详细信息 Controller (用户位于不同页面),则 newProduct 未定义,因为 $scope.$on > 未加载且无法检测到广播。有没有什么办法解决这一问题?非常感谢!

最佳答案

您应该将 loadTargetProduct 放入 $on 回调中,如果您的 newProduct 未加载,请使用 getTargetProduct 加载它。

   $scope.$on('newProduct', function(newProduct){
if (!(newProduct)){
//if newProduct is not laoded, load it.
testService.getTargetProduct().then(function(targetProduct) {

$scope.targetProduct = targetProduct;
})
}
})

关于javascript - 在我的情况下如何设置 Angular http 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com