我並不完全熟悉$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