我正在重新设计我的应用以在加载数据后加载页面。我有数据,但我需要把它交给我的其他两个控制器。我在我的主app.js中有一个自我激发的功能。我也有服务。
我无法弄清楚如何在函数中引用服务,所以我可以在那里添加数据。因此,可以从我的其他控制器访问。
这是app.js,我需要引用服务和服务本身的功能。我将发布完整的代码。
var app = angular.module('UtilityApp', ['ngRoute', 'ngDialog', 'uiSwitch', 'ui.select', 'ngResource', 'ui.bootstrap'])
.config(
[ '$routeProvider', function($routeProvider) {
$routeProvider.when('/edit', {
templateUrl: 'templates/login-page.html',
controller : 'LoginController'
});
$routeProvider.otherwise({
resolve:{
'LoginServiceData':function(LoginService){
return LoginService.promise;
}},
templateUrl: 'templates/Homepage.html'
});
}]);
(function($scope, UserService) {
var initInjector = angular.injector(['ng']);
var $http = initInjector.get('$http');
$http.get('rest/userdata/').
success(function (data) {
// angular.module('metadata', []).constant('userdata', data);
// UserDataService.setUserData(data);
angular.element(document).ready(function() {
angular.bootstrap(document, ['UtilityApp']);
});
}).
error(function (error) {
console.log(error.message);
});
setInterval(function(){
$scope.getMetaData();
}, 300000);
})();
希望有一种方法可以在函数中使用UserService。我将其添加为参数,但无法找到setUserData。
修改 我需要一种方法来获取$ http.get中的数据到我在其他js文件中没有显示的其他控制器
答案 0 :(得分:1)
您的应用结构错误。您不应该尝试在IIFE中加载数据然后引导AngularJS应用程序。在AngularJS中完成所有操作,如下所示。有myDataService
处理加载和提供数据。有一个.run()
块会在应用启动后立即触发数据加载。然后,您可以根据需要在应用中禁用功能,直到myDataService.dataLoaded
标志设置为true。
var app = angular.module("app", [ngRoute]);
app.service("myDataService", function($http) {
var service = this;
service.data = [];
service.dataLoaded = false;
service.loadData = function() {
return $http.get("/my/data/url")
.then(function(response) {
service.data = response.data;
service.dataLoaded = true;
});
};
});
app.run(function(myDataService) {
myDataService.loadData();
});