作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的服务中有一个来自另一个服务的 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/
我是一名优秀的程序员,十分优秀!