Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $oclazyload不使用AngularJS 1.5_Javascript_Angularjs_Oclazyload_Lazy Loading - Fatal编程技术网

Javascript $oclazyload不使用AngularJS 1.5

Javascript $oclazyload不使用AngularJS 1.5,javascript,angularjs,oclazyload,lazy-loading,Javascript,Angularjs,Oclazyload,Lazy Loading,我在实现过程中遇到一个问题,即延迟加载我的组件,如下所示 import angular from 'angular'; import uiRouter from 'angular-ui-router'; import providerComponent from './provider.component'; let providerModule = angular.module('provider', [ //uiRouter ]) .config(($sta

我在实现过程中遇到一个问题,即延迟加载我的组件,如下所示

import angular from 'angular';
import uiRouter from 'angular-ui-router';
import providerComponent from './provider.component';

let providerModule = angular.module('provider', [
        //uiRouter
    ])
    .config(($stateProvider, $compileProvider) => {
        "ngInject";

        $stateProvider
            .state('provider', {
                url: '/provider',
                template: require('./provider.html'),
                resolve: {
                    deps: ($q, $ocLazyLoad) => {
                        "ngInject";

                        var deferred = $q.defer();

                        require.ensure([], function() {
                            let component = require('./provider.component').default;

                            $ocLazyLoad.inject([])
                                .then(() => $compileProvider.component('provider', component))
                                .then(deferred.resolve);

                        }, 'provider');

                        return deferred.promise;
                    }
                }
            });
    }).name;

export default apiListModule;
问题

上面的代码不会抛出任何错误,
provider.contoller.js
不会加载

provider
组件包含以下文件:provider.js、provider.html、provider.less、provider.component.js、provider.controller.js

PS

provider.js

.config(($stateProvider) => {
    "ngInject";

    $stateProvider
    .state('provider', {
        url: '/provider',
        component: 'provider'
    });

});

问题

  • 组件定义的方式不正确
  • 无需使用
    $q
    ,因为
    $ocLazyLoad
    本身会返回一个承诺

  • 下面的代码通过定义
    提供程序组件
    并使用
    $stateProvider
    加载它来工作

    .config(($stateProvider, $ocLazyLoadProvider) => {
    
        $ocLazyLoadProvider.config({
            modules: [{
                name: 'provider-component',
                files: ['provider.component.js', 'provider.js', 'provider.html', 'provider.less']
            }]
        });
    
        $stateProvider
            .state('provider', {
                url: '/provider',
                template: './provider.html',
                resolve: {
                    load: ['$ocLazyLoad', function($ocLazyLoad) {
                        // will load the predefined configuration
                        return $ocLazyLoad.load('provider-component');
                    }]
                }
            });
    });
    
    了解更多有关可能配置的信息

    希望有帮助