gpt4 book ai didi

javascript - 如何从另一个服务 AngularJS 访问 promise

转载 作者:行者123 更新时间:2023-11-30 06:26:12 25 4
gpt4 key购买 nike

我在我的服务中有一个来自另一个服务的 promise 。我想直接访问数据。

这是我服务的(一小部分):

  factory('CalculationFactory', function(SizeFromPipe){
var input = {
sizes: function(pipe_id){
var sizesFromPipes = SizeFromPipe.getSizes(pipe_id);
sizesFromPipes.then(function(val){
console.log(val); //Is an object
return val;
});
}
return input;
}).

这是我的“数据服务”:

 factory('SizeFromPipe', function($resource, $q){
return {
getSizes: function(pipe_id){
var deffered = $q.defer();
$resource('/api/sizes/fromPipe/:id', {'id':'@id'})
.query({id:pipe_id},
function(sizes){
deffered.resolve(sizes);
},
function(response){
deffered.reject(response);
});

return deffered.promise;
}
};
})

我想从我的 Controller 上执行此操作:

$scope.sizes = CalculationFactory.sizes(pipe_id)

不过我得到了 undefined。

有什么想法吗?

更新:新增数据服务。我知道我可以使用 .then.. 从 Controller 访问它。我真的很想保持我的 Controller 干净,所以如果可以在我的模型中处理这个问题,那就太好了。

最佳答案

我个人保持资源工厂清洁,而不是在 $routeProvider 中使用 resolve,并找到了通过 $route.current.scope 访问范围变量的方法。所以,就在那里分配。 Controller 中没有代码,当路由更改时,它会自动从服务器获取响应。

resolve: {
anyname: function($route, Pipe) {
Pipe.query($route.current.params, function(data) {
$route.current.scope.some_variable = data;
});
}
}

资源

something.factory("Pipe", function($resource) {
return $resource('/api/sizes/fromPipe/:id');
})

关于javascript - 如何从另一个服务 AngularJS 访问 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20903738/

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