AngularJS - 在整个应用程序中访问承诺数据

时间:2014-10-12 19:42:57

标签: javascript angularjs promise

我有一个制作http get请求的工厂:

grey.factory('JiraData', function( $http ) {
   return {
      async: function( ) {
         return $http.get( 'js/testdata.json' )
            .then( function( result ) {
               return result.data;
            });
      }
   };
});

我想在我的应用程序中使用上面返回的数据,在各种控制器和指令中。做这个的最好方式是什么?我可以在本地/会话存储或根范围中存储和操作数据吗?如果是这样,最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

如果您想要一种方法来调用http.get函数,只有一个错误访问数据不止一次,一种方法是将保证保存在变量上。

grey.factory('JiraData', function( $http ) {
   var promise;

   return {
      async: function( ) {
         if(!promise) {
            promise =  $http.get( 'js/testdata.json' )
            .then( function( result ) {
               return result.data;
            });

         }
         return promise;
      }
   };
});

然后你就可以使用:

grey.controller('ACtrl', function( Jiradata ) {
  JiraData.async().then(function(returnData) {
      //your code
  });
}

这样,http请求只能调用一次