2015-01-09 56 views
0

在加载控制器之前,我试图想出一个调用来解析大量数据对象。 我正在使用ui-router,并且非常了解如何解决问题,但是如果它们不在本地存储中,我只需要加载api对象。下面是一些代码段我已经到位通过本地存储或api调用解决所有数据

//数据模型,保存所有对象一旦解决所有加载从本地存储。

function TraqMetaDataModel() { 

return { 
    countries: [], 
    brands: [], 
}; 

TraqMetaDataLoader.load() 

var traqMetaDataService = { 
    load : load 
}; 

return traqMetaDataService; 

function load() { 
    CountryLoader.fetchCountries(countrySuccess); 
    BrandLoader.fetchBrands(brandSuccess); 
} 

function countrySuccess(response) { 

    angular.forEach(LocalStorageHelper.get('countries'),function(value){ 
    TraqMetaDataModel.countries.push({CountryId : value.CountryId, Country : value.Country}); 
    }); 

} 

function brandSuccess(response) { 
    angular.forEach(LocalStorageHelper.get('brands'),function(value){ 
    TraqMetaDataModel.brands.push({BrandId : value.BrandId, BrandName : value.BrandName}); 
    }); 

} 

我有所有的逻辑来看看该项目是否存在localstorage,如果没有从api调用中获得。我想即时通讯寻找一种方法,在解析函数中检查应用程序状态是否准备就绪......

我将在ui路由中使用抽象路由进行单个调用。

有兴趣看看有没有人做过这样的事情。

谢谢罗布

+0

您是否希望等到数据被加载,然后继续? – 2015-01-09 19:48:31

+0

我正在寻找模型来填充本地存储的数据或必要的API调用 – 2015-01-09 19:53:42

回答

0

这样的事情? 如果你没有找到在本地存储数据,然后使用它拿来$http

var app = angular.module('plunker', []); 

app.controller('MainCtrl', ['$scope','$http', function($scope, $http) { 
    $scope.name = 'World'; 
    $scope.data = ["Data1","Data2","Data3","Data4"] 

    angular.forEach($scope.data, function(obj, i){ 
    $http({method:'GET', url: 'http://httpbin.org/get', headers: { 
    'Content-Type': "application/json" 
}}). 
     success(function(data, status) { 
      $scope.status = status; 
      $scope.data = data; 
     }). 
     error(function(data, status) { 
      $scope.data = data || "Request failed"; 
      $scope.status = status; 
     }); 
    }); 
}]); 

参见:http://plnkr.co/edit/cNDULiN02i430zl1zMpp?p=info

+0

谢谢,但我已经处理了查找数据并使用$ http获取数据。我的问题是试图在控制器解决之前找到所有可用的数据。我不想要的是每组数据的所有单独的决议。 – 2015-01-09 23:18:44

+0

你不能在这种情况下使用服务吗?服务是单例,并在控制器之前初始化。 – 2015-01-10 03:19:33