0
$ state.go(...)時我已經配置這樣的路由器:
function Router($injector) {
$injector.get('$locationProvider').html5Mode({
enabled: true,
requireBase: false
});
$injector.get('$stateProvider')
.state('login', {
url: '/login',
templateUrl: 'app/components/login/login.html'
})
.state('auth', {
abstract: true,
templateUrl: 'app/layout/layout.html'
})
.state('auth.home', {
url: '/home',
templateUrl: 'app/components/home/home.html',
auth: true
});
$injector.get('$urlRouterProvider').otherwise('/home');
}
和run
塊配置是這樣的:
function stateChangeHandler(event, toState, toParams) {
var injector = this.$injector;
function inject(name) {
return injector.get(name);
}
if (
toState.auth &&
!inject('AuthService').isAuthenticated()
) {
event.preventDefault();
inject('$state').go('login');
} else if (
!toState.auth &&
inject('AuthService').isAuthenticated()
) {
event.preventDefault();
inject('$state').go('auth.home');
}
}
function RouterRun($injector) {
$injector.get('$rootScope').$on('$stateChangeStart',
stateChangeHandler.bind({
$injector: $injector
}));
}
//修訂
一起:
angular.module('router', ['ui.router'])
.config(Router)
.run(RouterRun);
angular.module('app', [..., 'router']);
,當我只輸入在這樣172.16.16.114:8080
和用戶地址欄主機沒有驗證,那麼我得到
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
http://errors.angularjs.org/1.3.15/$rootScope/infdig?p0=10&p1=%5B%5D
at REGEX_STRING_REGEXP (angular.js:63)
at Scope.$get.Scope.$digest (angular.js:14346)
at Scope.$get.Scope.$apply (angular.js:14571)
at bootstrapApply (angular.js:1455)
at Object.invoke (angular.js:4203)
at doBootstrap (angular.js:1453)
at bootstrap (angular.js:1473)
at angularInit (angular.js:1367)
at HTMLDocument.<anonymous> (angular.js:26304)
at jQuery.Callbacks.fire (jquery.js:3099)
但最終我在酒吧的地址到達目標login
頁172.16.16.114:8080/login
我找不到爲什麼會出現這個錯誤。請幫助任何建議。
這是很容易解決的。請添加您的視圖(HTML),所以我們可以幫助你。 – lin
@lin您要看什麼視圖(模板)? –
我想知道,你的'函數'被調用的時間和方式。 – lin