在运行控制器之前运行一个函数

时间:2017-11-21 04:38:45

标签: angularjs promise angularjs-service angularjs-factory angularjs-provider

我已按如下方式定义了工厂<div style="padding-top: 100px;">

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() }]} }) 。因此,我想知道是否有办法在控制器而不是状态中实施此规则。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

尝试检查

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

我不确定这是否有效。

答案 1 :(得分:0)

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

请参阅http://jsfiddle.net/ysq3m/