使用UI路由器时无法导航到“懒惰初始化子路由”

时间:2018-12-12 21:11:25

标签: angularjs angular-ui-router oclazyload

我有一个父状态,其控制器和路由在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文件中定义子状态,以保持代码更整洁,是否可以解决此问题?

0 个答案:

没有答案