0
我是AngularJS的新手。如果我的問題很愚蠢,我真的很抱歉,但我無法在兩天內找到決定。所以,我有一個服務,它必須在初始化期間通過$http
自己加載數據並存儲它。我發現了一些關於promises
的信息,但每次訪問它時都會加載數據。但我希望這個數據加載一次,可以更改和保存。爲了更好地理解我這是怎麼想AJAX加載JSON數據並存儲在angularjs服務
app.run(function ($http, MeasurUnitsService) {
$http.get('jsonData/tabs.json').success(function (data) {
MeasurUnitsService.tabs = data;
});
$http.get('jsonData/measurmentUnits.json').success(function(data){
MeasurUnitsService.measurmentUnits = data;
});
});
angular.module("emis-calc").service('MeasurUnitsService', function($http){
var tabs = {};
var measurmentUnits = {};
var ConvertTo = function(){
// some logic with accessing to measurmentUnits
// measurmentUnits is empty
return result;
}
return {
convertTo : ConvertTo,
tabs : tabs,
measurmentUnits : measurmentUnits
}
})
但據我瞭解,因爲$http.get()
是異步和封鎖,MeasurUnitsService.tabs
和MeasurUnitsService.measurmentUnits
總是{}
在控制器和其他服務。我覺得這很容易實現,但根本找不到它。也許有什麼lock()
方法? 另外,如果不是太困難,你能否更詳細地解釋,我的主要錯誤在哪裏。
當然,您可以使用Promises而不是回調 –
非常感謝!有用。 –