我有一个发出 http get 请求的工厂:
grey.factory('JiraData', function( $http ) {
return {
async: function( ) {
return $http.get( 'js/testdata.json' )
.then( function( result ) {
return result.data;
});
}
};
});
我想在我的应用程序中的各种 Controller 和指令中使用上面返回的数据。做这个的最好方式是什么?我可以在本地/ session 存储或根范围内存储和操作数据吗?如果是这样,最好的方法是什么?
最佳答案
如果您正在询问一种调用 http.get 函数的方法,只有一个错误多次访问数据,一种方法是将 promise 保存在一个变量上。
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请求只调用一次
关于javascript - AngularJS - 在整个应用程序中访问 promise 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26329229/