【发布时间】:2014-07-08 15:44:30
【问题描述】:
我正在使用带有解析函数的 Angular UI-Router,但是当我缩小解析函数时,我的整个应用程序都会中断,因为解析函数语法不适合缩小。它需要基于here 概述的字符串注入。我只是不知道怎么写。有什么建议吗?
// Resolves
var checkAuthentication = function($q, $location, $rootScope, Users) {
if ($rootScope.user) return true;
if (!$rootScope.user) {
var deferred = $q.defer();
Users.get(null, function(user) {
if (!user) {
window.location = '/';
return false;
}
console.log('User fetched: ', user);
$rootScope.user = user;
deferred.resolve();
}, function() {
window.location = '/';
return false;
});
return deferred.promise;
}
};
// Routes
angular.module('Dashboard').config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
// For any unmatched url, redirect to '/'
$urlRouterProvider.otherwise('/dashboard');
// Now set up the states
$stateProvider
.state('dashboard', {
url: '/dashboard',
templateUrl: 'views/content/dashboard.html',
resolve: {
checkAuthentication: checkAuthentication
}
})
【问题讨论】:
-
您是否缺少
.module("Dashboard")函数的其余部分 - 否则它缺少右括号和什么 npt -
你不会像使用 .config 一样传递它吗?作为一个数组?
-
tymeJV - 我只是将 .config 函数放入以供参考,所以这不是问题。问题仅在于 checkAuthentication 函数的语法。
-
Kevin,是的,配置语法是正确的,但我对 angular 还是很陌生,我认为我不会将 checkAuthentication 函数放在 angular '.config' 语句中。
-
您不必这样做。
var myfn = ['$q', function ($q) {...如果你想重用它,它可能应该是一个服务。
标签: javascript angularjs angular-ui-router