在我的应用中,许多视图或控制器都会使用一些数据。你可以认为它们是一些数据字典,比如状态图定义。
现在我的解决方案是将它们放入AppContoller,并将它们放入$ scope或$ rootScope。 (AppController中的$ scope是所有控制器的父作用域,因此可以在所有控制器中访问数据。)
但问题是,它将以异步方式启动$ resource,因此可能还没有准备好使用它们。因为所有数据都将通过$ resource获得。有时在必要的全局数据之前获取其他数据。
现在在使用全局数据的控制器中,我必须检查全局数据,如果它还没有准备好,稍后用超时调用初始化函数。
所以,我的问题是,是否有更好的解决方案来初始化所有应用程序使用的必要数据?
答案 0 :(得分:2)
好吧,据我了解你的问题,你需要确保当你的应用程序启动时,你从服务器获取了一些可以在整个应用程序中全局使用的数据。
我的建议是采用以下方法,
创建一个服务来保存您的全局数据。
var app = angular.module('myApp', []);
app.service('constantService', function() {
// All your constants declared here.
});
现在在app.run方法中,进行ajax调用或任何你想做的事情,并初始化服务中的所有常量。
app.run(function($rootScope, $http, constantService) {
/*
Make an ajax call here and fetch all the Constants from your server.
var request = {};
request.method = 'POST';
request.data = {};
request.url = url;
var promise = $http(request);
var service = this;
promise.success(function(data, status, header, config) {
if (showLoader === true || showLoader === undefined) {
service.hideModal();
}
successCallback(data);
});
promise.error(function(data, status, header, config) {
});
*/
});
您可以在加载这些常量时显示加载消息,以避免用户在通话期间进行干预。