我正在創建我的第一個AngularJS應用程序。AngularJS Resolve
我有一種問題,我的索引頁。 根據用戶是否經過身份驗證,可能有兩個不同的模板。
我的想法是在ng-view和視圖控制器(indexController,aboutController,...)之前定義一個MainController
,這取決於顯示哪個視圖。
我做了一個服務UserService
其使命是從我的服務器獲取用戶數據,並將它們用於控制器。
問題是我想我的MainController獲取用戶的數據。
我讀過關於resolve
和promise
的東西,但它只適用於視圖控制器,因爲它在$routeProvider
中定義。
我的問題是我怎麼能執行我的應用程序之前,航線初始化我MainController
數據?
PS:代碼有點幫助
的index.html
<div id="page" ng-controller="MainController as Main">
<div id="navbar-container" class="shadow1">
<navbar></navbar>
</div>
<div class="row">
<div id="page-container" class="large-12 columns">
<div ng-view></div>
</div>
</div>
</div>
mainController.js
...
define([], function()
{
return angular.module('MyApp.controllers', []).controller('MainController', ['$scope', '$http', 'UserService', function($scope, $http, UserService)
{
// I want this to be defined before executing the app //
$scope.currentUser = UserService.getCurrentUser();
}]);
});
...
userService.js
define(['angular'], function (angular)
{
return angular.module('MyApp.services', []).service('UserService', ['$http', function($http)
{
var _currentUser = null;
var _promise = (_currentUser !== null) ? _currentUser : $http.get('/api/user').success(function(data)
{
_currentUser = data.result;
});
return {
promise : _promise,
getCurrentUser : function()
{
return _currentUser;
},
isAuthenticated : function()
{
return (_currentUser !== null);
},
};
}
]);
});
也許有另一種方法做什麼我期望,但我真的AngularJS一個小白。我真的很感謝一些幫助。
預先感謝您。
我嘗試這樣做。這工作昨天,但這是因爲運氣。今天我注意到我的數據在頁面開始渲染後加載。渲染前有沒有辦法等待數據? – T00rk 2014-09-25 08:54:17
對於那種嘗試在$ rootScope。$ on方法中寫入該行的方法,該方法在run方法內定義 – 2014-09-25 11:29:10