私はそこに、
Restangular と angular-local-storage を使用して Angular.js アプリを構築しています。RESTFull サービス サーバーからデータを取得し、それを $scope 変数に割り当てる必要があります。
ビュー(html)にロードする前に、すべてのデータがロードされるのを待つ方法を知りたいです。
これまでに行ったことは次のとおりです。
app.controller('InventoryController', function($scope, inventoryService) {
$scope.productList = inventoryService.getProduces();
console.log($scope.productList); // At that point, $scope.productList is null
});
app.service('inventoryService', function(entityService, browserStorageService) {
entityService.allUrl('product', entityService.getBaseUrl).getList().then(function(data){
console.log(data); // The data variable is not null here.
browserStorageService.set('producList', data);
});
this.getProduces = function() {
return browserStorageService.get('producList');
};
});
app.service('browserStorageService', function(localStorageService) {
localStorageService.clearAll();
return localStorageService;
});
app.service('entityService', function(Restangular) {
Restangular.setBaseUrl('http://localhost:8000/rest/');
return Restangular;
});
私は JavaScript の非同期の性質にまったく慣れていません。それはかなり単純なことだと確信していますが、状況を修正するために何ができるかについて頭を悩ませることはできません。
コントローラーへの最初の呼び出しでは、データはページにローダーされませんが、アプリをリロードせずに再度呼び出すと、データはそこにあります。
ご協力いただきありがとうございます!