3

I'm very new on ui-router and ocLazyLoad and probably this question could be easy to resolve but the fact that I'm writing here its because I did not have luck searching on blogs. My app is running nice with ocLazyLoad now.

This is my configuration on my main app.js class:

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'
        });

}]);

Now I wish to stop put more states on the same class otherwise my app.js will be huge in a couple of months. So I've removed some states from here to my other module, called 'home-module':

home.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'
            });

}]);

BUT I'm getting this error: Could not resolve 'home.board' from state 'ini' which makes totally sense because the file home.js it's not being loaded before. How can I resolve this?.

Writing all my app states on my unique main app.js class it's the only way?

napstercake
  • 1,815
  • 6
  • 32
  • 57

1 Answers1

0

it is error of state. not resolve. i prefer use ocLazyLoad from my controllers. in there we have a lot more control

.controller("MyCtrl", function($ocLazyLoad) {
    $ocLazyLoad.load('views/home/home.js');
});
dimson d
  • 1,488
  • 1
  • 13
  • 14