Javascript 角度UI路由器缩小错误-如何将解析语法更改为基于字符串注入?
我使用带有解析函数的Angular UI Router,但是当我缩小解析函数时,我的整个应用程序都会中断,因为解析函数语法不适合缩小。它需要基于字符串注入,如所述。我只是不知道怎么写。有什么建议吗Javascript 角度UI路由器缩小错误-如何将解析语法更改为基于字符串注入?,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我使用带有解析函数的Angular UI Router,但是当我缩小解析函数时,我的整个应用程序都会中断,因为解析函数语法不适合缩小。它需要基于字符串注入,如所述。我只是不知道怎么写。有什么建议吗 // Resolves var checkAuthentication = function($q, $location, $rootScope, Users) { if ($rootScope.user) return true; if (!$rootScope.user) {
// 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
}
})
通常的做法是将数组传递给解析:
resolve: {
welcome: ['$q', function ($q) {
var def = $q.defer();
setTimeout(function () {
def.resolve("Hello World!");
},500);
return def.promise;
}]
}
考虑到这一点,您可以这样定义您的var:
var welcome = ['$q', function ($q) {
var def = $q.defer();
setTimeout(function () {
def.resolve("Hello World!");
},500);
return def.promise;
}]
但这当然不是真正的可重用性,因此在这一点上,我建议将其移动到服务。您是否缺少
.module(“仪表板”)
func的其余部分?否则它缺少右括号,还有什么npt?您不可以用与.config相同的方式传递它吗?作为一个数组?tymeJV-我只是把.config函数放进去作为参考,所以这不是问题所在。问题只在于checkAuthentication函数的语法。Kevin,是的,配置语法是正确的,但我对angular还是相当陌生,我认为我不会将checkAuthentication函数放在angular.config语句中。你不必这样做var myfn=['$q',function($q){…
如果你想重用它,它可能应该是一个服务。”(…)这当然不是真正的可重用性,所以在这一点上,我建议将它移动到一个服务。”-我的想法正是如此。适合我。谢谢:)