信息我有一個工廠,我是從一臺服務器使用$ HTTP方法獲取數據:角JS節省從工廠AJAX請求
.factory('$factory', function ($q, $http, $timeout, $state, $ionicHistory, $localstorage) {
var obj = [];
var functions = {
getData: function() {
var dfd = $q.defer();
if(!obj){
$http({
url: remoteUrl+'/getdata',
method: 'POST',
data: {}
}).then(function(response) {
$timeout(function(){
obj = response.data;
dfd.resolve(response.data);
}, 2000)
}, function(response) {
}
}else{
return obj;
}
return dfd.promise;
}
}
}
所以這個獲取數據,並把它放在一個對象。糾正我,如果我錯了,但這種使用工廠這種類型的行動的方法是它不綁定到控制器,並可以在我的應用程序的任何地方使用。
考慮到這一點,我希望能夠這樣做,以便我可以在應用程序中的任何位置獲取數據,而無需每次都查詢服務器。即一旦查詢了服務器,工廠就會保存對對象的響應(就像我現在所做的那樣)。但是,例如,在另一個控制器中訪問數據時遇到問題。
我已經開始通過使用if(!obj)行來使它看起來應該看起來像,但在else語句中,我似乎不能返回obj對象。它會拋出錯誤,因爲它沒有像預期的那樣返回一個承諾。
我不確定我是否甚至沿着正確的路線。
感謝
您可能會發現這個SO文章有用:http://stackoverflow.com/questions/33968655/how-can-i-use-my-json-without-triggering-a-新的API請求,每次,我想學う/ 33969521#33969521 – sjokkogutten