3

我对 ui-router 和 ocLazyLoad 很陌生,可能这个问题很容易解决,但我之所以写在这里是因为我没有运气在博客上搜索。我的应用程序现在使用 ocLazyLoad 运行良好。

这是我在app.js主类上的配置:

angular.module('me', [
'ui.router',
'oc.lazyLoad',
'me.partials.footer',
'me.partials.header'
])

.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise('/ini')

    $stateProvider
        .state('ini', { // Login
            url: '/ini',
            templateUrl: 'views/ini/ini.html'
        })
        .state('signin', {
            url: '/signin',
            templateUrl: 'views/signin/signin.html'
        })
        .state('home', {
            url: '/home',
            templateUrl: 'views/home/home.html',
            resolve: {
                home: function($ocLazyLoad) {
                    return $ocLazyLoad.load(
                        {
                            name: "views.home",
                            files: [
                                "views/home/home.js",
                            ]
                        }
                    );
                }
            }
        })
        .state('home.profile', {
            url: '/profile',
            templateUrl: 'views/profile/profile.html'
        })
        .state('home.board', {
            url: '/board',
            templateUrl: 'views/board/board.html'
        });

}]);

现在我希望停止在同一个类上放置更多状态,否则我的 app.js 将在几个月内变得巨大。所以我已经从这里删除了一些状态到我的另一个模块,称为'home-module':

主页.js

angular
.module('views.home', [{
        name: "views.home.controller",
        files: ["views/home/home-controller.js"]
    }
])
.config(['$stateProvider', '$urlRouterProvider', 
    function ($stateProvider, $urlRouterProvider) {

        $stateProvider
            .state('home', {
                url: '/home',
                templateUrl: 'views/home/home.html',
                resolve: {
                    home: function($ocLazyLoad) {
                        return $ocLazyLoad.load(
                            {
                                name: "views.home",
                                files: [
                                    "views/home/home.js",
                                ]
                            }
                        );
                    }
                }
            })
            .state('home.profile', {
                url: '/profile',
                templateUrl: 'views/profile/profile.html'
            })
            .state('home.board', {
                url: '/board',
                templateUrl: 'views/board/board.html'
            });

}]);

但是我收到了这个错误:Could not resolve 'home.board' from state 'ini'这完全有道理,因为文件 home.js 之前没有被加载。我该如何解决这个问题?

在我独特的主 app.js 类上编写我所有的应用程序状态,这是唯一的方法吗?

4

1 回答 1

0

这是状态错误。不解决。我更喜欢从我的控制器中使用 ocLazyLoad。在那里我们有更多的控制权

.controller("MyCtrl", function($ocLazyLoad) {
    $ocLazyLoad.load('views/home/home.js');
});
于 2016-08-28T20:08:39.927 回答