AngularJS,oclazyload加载模块具有动态状态

时间:2015-10-20 11:28:38

标签: javascript angularjs module oclazyload

我已经实现了模块,可以在需要时加载模块。所以我已经实现了获取状态和js文件的结构:


    --app
      --main (loader module)
        --views
        --controllers
        --services (global)
      --modules (custom modules)
        --authentification
          --view/controllers/services
          --authentification.config.js (state list and dependecies)
        --users
          --view/controllers/services
          --users.config.js (state list and dependecies)      
       --app.config.js (abstract global state)
       --global.modules.js (modules list to load when needed) 

我的问题是:  当我重新加载页面时,它将我重定向到其他网址。所以我做了一个关于它的研究,我发现角度ui-router在加载负责模块之前读取url。我需要延迟提取URL,直到加载器模块完成加载。

global.modules.js


    // Custom App Modules
    var CUSTOM_MODULES = [
        {
            name: 'users',
            autoLoad: true
        },
        {
            name: 'authentification',
            autoLoad: true
        }
    ];

authentification.config.js


    ModuleFactory.createModule({
        module : 'authentification', // Name of the module
        dependencies : ['WS'], // Dependency injection
        states : [
            {
                name: 'user', 
                url: '/user',
                abstract: false 
            },
            {
                name: 'user.login',
                url: '/login',
                templateUrl: 'login.html',
                services: ['authCas.js', 'authWS.js', 'profile.js'],
                controllers: ['loginController.js'] 
            },
            {
                name: 'user.forgetpassword',
                url: '/sendmailconfirmation',
                templateUrl: 'forgetpassword.html'
            }
        ]
    });
    
app.config.js
<pre>
ModuleFactory.createModule({
    module : 'app', // Name of the module
    isBootstrapModule : true,
    dependencies : [ 'ui.router','ui.bootstrap','ui.load','ui.jq','ui.validate',  'oc.lazyLoad', 'oc.lazyload.config', 'ngDebug'],
    otherwiseUrl : '/app/home',
    states : [
        {
            name: 'app', // State Name
            url: '/app', // State URL
            abstract: true, // true if your state is just a layout / container
            vendorModules: VENDOR_MODULES
        },
        {
            name: 'app.home',
            url: '/home',
            templateUrl: 'home.html',
            controllers: ['homeController.js']
        }
    ]
});

0 个答案:

没有答案