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

标签 javascript angularjs

我在我的服务中有一个来自另一个服务的 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/

相关文章:

javascript - 如何在 WebView 中保持 CSS 持久化

javascript - css 仅适用于模板区域

javascript - React Native 中的逗号和解析错误

javascript - 从指令调用的 Controller 函数内的空数组 - AngularJS

angularjs - 如何使用 jasmine 测试 John papa vm.model 单元测试?

javascript - 更改页面中的所有文本节点

javascript - 在数组或类似的对象上使用 jQuery.find()

angularjs - 使用 ui-router 更改状态 <a href ="/#/xyz> instead of <a ui-sref="Primary">

javascript - AngularJS 计算多个相同对象的总数

javascript - 检查时 Bootstrap 按钮类重复,我该如何解决这个问题?