我有一个父状态,其控制器和路由在App.js中定义,并且是延迟加载的:
$stateProvider.state({
name: 'Parent',
url: '/Parent',
templateUrl: 'Parent.html',
controller: "ParentController",
resolve: {
load: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load([
"/SomeService.js",
"/ParentController.js"]);
}]
}
});
同样在App.js中,我保留了对状态提供者的引用
AngularApp.StateProvider = $stateProvider.state;
和路线提供商:
AngularApp.AppController = $controllerProvider.register;
否则,控制器和状态稍后将显示为未定义
然后在延迟加载的父控制器中,我定义子状态和父控制器:
AngularApp.StateProvider({
name: 'Parent.Child',
url: '/{parameter}'
});
AngularApp.AppController('ParentController', ['$scope', function ($scope) {
}]);
这很好用,可以直接转到网址: 本地主机:8080 /父项
加载正常,并在刷新页面时再次加载正常。在父状态已导航至后,导航至子状态
localhost:8080/Parent/ChildParameter
效果很好。
尝试直接导航到子状态(例如从新选项卡,或在子状态下刷新页面)时,会发生问题 相反,它失败了,并改为加载.otherwise()路由
发生这种情况时,就像路由器无法确认应加载父状态的延迟加载控制器,然后继续定义子状态一样。
我想避免在前端加载的js文件中定义子状态,以保持代码更整洁,是否可以解决此问题?