我的路由器配置如下:
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
我无法找出发生此错误的原因。请帮助提出任何建议。
答案 0 :(得分:0)
Yeoman gulp-angular生成器创建gulp任务,默认情况下不包括html中生成的模板缓存模块,因此所有模板请求都发送到服务器,而不是通过缓存模块。通过在登陆html问题中添加生成的文件来改变gulp任务后解决了。