AngularJS ocLazyLoad按需加载控制器/js文件的延迟加载(一)
发布时间:2020-12-17 09:45:55 所属栏目:安全 来源:网络整理
导读:一、ocLazyLoad说明 1.ocLazyLoad是AngularJS的第三方库,可以实现模块、控制器及其他依赖的动态加载/按需加载 2.$ocLazyLoad.load()支持多个文件,可以自定义指定文件类型,可以自定义指定是否缓存在客户端 3.存在问题,$ocLazyLoad.load(),返回动态类型$$
一、ocLazyLoad说明 1.ocLazyLoad是AngularJS的第三方库,可以实现模块、控制器及其他依赖的动态加载/按需加载 2.$ocLazyLoad.load()支持多个文件,可以自定义指定文件类型,可以自定义指定是否缓存在客户端 3.存在问题,$ocLazyLoad.load(),返回动态类型$$state,对于js文件不存在或加载失败还没有找到相关处理的api 二、相关链接: Git源代码地址:https://github.com/ocombe/ocLazyLoad 官方网址:https://oclazyload.readme.io 官方Api文档:https://oclazyload.readme.io/docs 三、实例1,在控制器中动态加载模块 1.引用 <script src="../Scripts/jquery-1.10.2.min.js"></script> <script src="../Scripts/Angular/angular.min.js"></script> <script src="../Scripts/Angular/ocLazyLoad.min.js"></script> <script src="../Scripts/Angular/angular-ui-router.min.js"></script> <h3>Lazy load测试</h3> <div id="example" ng-app="myApp" ng-controller="TestController"></div> 2.js angular.module('myApp',['oc.lazyLoad']) .controller('TestController',function ($scope,$ocLazyLoad,$compile) { //动态加载模块 $ocLazyLoad.load('../scripts/myjs/module1.js').then(function () { var el,elToAppend; elToAppend = $compile('<say-hello to="world"></say-hello>')($scope); el = angular.element('#example'); el.append(elToAppend); console.log('加载成功'); },function (e) { console.log('加载失败'); console.error(e); }); });四、实例2,在控制器中动态加载其他依赖 1.html <div class="container" ng-app="myApp" ng-controller="myCtrl"> <ul class="nav nav-pills"> <li role="presentation"><a href="#/home">首页</a></li> <li role="presentation"><a href="#/about">关于页面</a></li> </ul> <div class="panel panel-danger"> <div class="panel-heading"> <div class="panel-title">模板内容</div> </div> <div class="panel-body" ui-view></div> </div> </div>2.js //动态加载依赖文件 var app = angular.module('myApp',['ui.router','oc.lazyLoad']); app.config(function ($stateProvider,$urlRouterProvider) { $stateProvider.state('index',{ url: '',templateProvider: function () { return '<h1>这是首页</h1>'; } }); }); app.controller('myCtrl',$ocLazyLoad) { //在controller中动态加载依赖 $ocLazyLoad.load([ "../Content/bootstrap.min.css",{ files: ["../Scripts/jquery-1.10.2.min.js"],cache: true } ]); });五、实例3,全局配置+路由处理 1.模板同上 2.js var app = angular.module('myApp',['oc.lazyLoad','ui.router']); //配置路由 app.config(function ($stateProvider,$urlRouterProvider,$ocLazyLoadProvider) { $stateProvider.state('index',//templateUrl: '/template/home.html',templateProvider: function () { return '<h1>这是首页</h1>'; },resolve: { des: function ($ocLazyLoad) { //var ctrl = $ocLazyLoad.load('/scripts/myjs/home.js'); var ctrl = $ocLazyLoad.load([ { files: '/scripts/myjs/none.js',cache: true //指定是否启用缓存 } ]); console.info(ctrl); //此处可以对加载失败的js文件处理 //console.info(typeof ctrl.$$state); // console.info(ctrl.$$state); //$$state 是动态类型,没法直接获取属性和值 if (ctrl.$$state.status == 2) return undefined; return ctrl; } } }); //全局配置 $ocLazyLoadProvider.config({ debug: true,//知否启用调试模式 events:true //事件绑定是否启用 }); }); 更多: AngularJS 动态加载控制器实例-ocLoazLazy(二) AngularJS路由之ui-router(一) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |