0

我定义了一个工厂auth如下:

app.factory('auth', [function () {
    var auth = {};

    auth.getUser = function () {
        ... ...
        // get user from cookie, cache, history, etc.
    }

    return auth
}]);

对于许多页面,我希望始终auth.getUser()在显示它们之前运行。为此,目前,我使用resolve,例如:

.state('home', {
    url: '/home',
    templateUrl: '/htmls/home.html',
    controller: 'MainCtrl',
    resolve: { getUser: ['auth', function (auth) { return auth.getUser() }]}
 })

这个实现的缺陷是我必须写很多resolve. 因此,我想知道是否有办法在控制器而不是state中实现此规则。有人可以帮忙吗?

4

2 回答 2

0

尝试检查条件

$rootScope.$on('$stateChangeStart', function (event, toState) {
  //condition here and $state.go('')
});

我不确定这是否有效。

于 2017-11-21T05:00:27.167 回答
0

use angular run function
app.run(function() {
    alert(1);
});

http://jsfiddle.net/ysq3m/

于 2017-11-21T06:18:26.890 回答