我并不完全熟悉$stateProvider
所使用的视图语法。我会给你两个版本,第一个看起来与你的例子非常相似,第二个版本更符合最佳实践。
$stateProvider
.state('base', {
abstract: true,
url: '',
templateUrl: 'views/base.html'
})
.state('login', {
url: '/login',
parent: 'base',
templateUrl: 'views/login.html',
controller: 'LoginCtrl'
})
.state('dashboard', {
url: '/dashboard',
parent: 'base',
templateUrl: 'views/dashboard.html'
})
最佳实践版本:
(function() {
'use strict';
angular
.module('app.core')
.config(stateConfig)
.run(errorHandler);
stateConfig.$inject = ['$stateProvider', '$urlRouterProvider', '$locationProvider'];
getZipCodes.$inject = ['googleMapService'];
errorHandler.$inject = ['$rootScope', 'logger'];
function stateConfig($stateProvider, $urlRouterProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$urlRouterProvider.otherwise('/');
$stateProvider.state('core', {
url: '/',
templateUrl: 'app/core/core.html',
controller: 'CoreController',
controllerAs: 'vm',
resolve: {
getZipCodes : getZipCodes
}
})
}
/** @desc: Ping the back-end for a JSON object that will be converted into an array of NYC zip codes */
function getZipCodes(googleMapService) {
return googleMapService.getZipCodes();
}
/** @desc: $stateChangeError handler */
function errorHandler($rootScope, logger) {
$rootScope.$on('$stateChangeError', function (error, event) {
if (error) { logger.error('Error while changing states', error); }
if (event) { logger.error('The event that caused the error', event); }
})
}
})();
谢谢!通过添加“父母”它的工作 – moondaisy
太棒了!我很高兴它的工作:D 如果你想要一些额外的功劳,我会尝试重构你的当前解决方案到最佳实践版本。这里是一个可供参考的链接: https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md – richdotjs
我也想补充一点,你应该肯定有某种错误处理程序到位。这将使未来的调试更容易。我想象一下,在查看没有错误信息的空白页面时,你一定被挫折感压垮了。 (logger.error('Error while change states,error));} if(event){logger。错误('导致错误的事件',事件);} })' – richdotjs