Angularjs ui路由器用参数注释解析以缩小?

Angularjs ui路由器用参数注释解析以缩小?,angularjs,angular-ui-router,minify,Angularjs,Angular Ui Router,Minify,如果代码注释不正确,缩小时ui路由器会中断。我已经完成了这项工作,我的大部分路线工作也都完成了,但这项工作尤其没有: var authRedirect = function(s) { return ['$state', '$q', 'AuthService', function($state, $q, AuthService) { var d = $q.defer(); var is_auth = AuthService.checkAuth();

如果代码注释不正确,缩小时ui路由器会中断。我已经完成了这项工作,我的大部分路线工作也都完成了,但这项工作尤其没有:

var authRedirect = function(s) {
    return ['$state', '$q', 'AuthService', function($state, $q, AuthService) {
        var d = $q.defer();
        var is_auth = AuthService.checkAuth();
        if(!is_auth) {
            d.reject();
            $state.go(s);
        } else 
           d.resolve();
        return d.promise;
    }];
}

// ...

.state('secret', {
    url: '/secret',
    controller: 'TestCtrl',
    templatesUrl: '/test.html',
    resolve: { authRedirect: authRedirect('other') }
})
.state('other', { .... } )
我正在将另一个状态传递到我的
resolve
函数中,如果不满足某些条件,该函数应该重定向到该状态。我在其他几个路由中使用了这个解析函数,因此它是保持ui路由器代码干净的一种简便方法


虽然未缩小的版本可以正常工作,但该版本的缩小版不起作用(它什么也不做)。但似乎我已经正确地注释了它,因为没有抛出错误。可能有什么问题?

请使用更新代码

.state('secret', {
    url: '/secret',
    controller: 'TestCtrl',
    templatesUrl: '/test.html',
    resolve: { authRedirect: ['authRedirect', function(authRedirect){ return authRedirect('other')}] }
})

您也可以这样更新代码

.state('secret', {
    url: '/secret',
    controller: 'TestCtrl',
    templatesUrl: '/test.html',
    resolve: { authRedirect: function() { return authRedirect('other')} }
})

嗯,这会使整个路由中断,而不仅仅是重定向部分。@rublex-我很确定这会起作用。你能和我分享一下更新后的代码吗?我想你把我的全局函数放在自己的服务中是对的。我试试看。但是除了污染全局名称空间之外,是否有一个特别险恶的原因使得authRedirect作为一个全局函数是不好的?@Rublex-我有一个与您解释的相同的原因。安格尔制定了一个协议,我们应该遵守这个协议。这就是我所相信的。