一、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(一)

AngularJS ocLazyLoad按需加载控制器/js文件的延迟加载一的更多相关文章

  1. html5 拖拽及用 js 实现拖拽功能的示例代码

    这篇文章主要介绍了html5 拖拽及用 js 实现拖拽,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. amaze ui 的使用详细教程

    这篇文章主要介绍了amaze ui 的使用详细教程,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. ios – SKLabelNode延迟应用程序启动

    目前我正在使用SpriteKit编写一个小应用程序,它工作得非常好,但唯一的问题是SKLabelNode,我使用以下正常代码初始化:还有很多东西可以初始化,但它们不会影响任何东西.如果我注释掉上面的代码,应用程序会在平时加载.使用SKLabelNode,它可以将负载延迟几秒钟……

  4. swift皮筋弹动发射飞机ios源码

    这是一个款采用swift实现的皮筋弹动发射飞机游戏源码,游戏源码比较详细,大家可以研究学习一下吧。

  5. Swift延迟加载的一种用途

    不可以在默认属性中来完成吗?本猫想了一会,于是有了如下代码:不幸的是,以上代码不能正确运行,因为其中的self并没有代表ViewController的实例对象.所以此路不通.所幸的是Swift为我们提供了一种延时加载属性的机制,我们可以这样写:很好很强大!需要注意的是lazy修饰的属性初始化代码只会被运行一次,无论你访问该属性多少次!

  6. Swift与Js通过WebView交互

    开发环境:Swfit2.3XCode8.2基础概念jscontext,jscontext是代表JS的执行环境,通过-evaluateScript:方法就可以执行一JS代码JSValue,JSValue封装了JS与ObjC中的对应的类型,以及调用JS的API等JSExport,JSExport是一个协议,遵守此协议,就可以定义我们自己的协议,在协议中声明的API都会在JS中暴露出来,才能调用Swif

  7. JSCore swift

    如果双方相互引用,会造成循环引用,而导致内存泄露。以上是Jscore的基本使用,比较简单

  8. Swift WKWebView的js调用swift

    最近项目需求,需要用到JavaScriptCore和WebKit,但是网上的资源有限,而且比较杂,都是一个博客复制另外一个博客,都没有去实际敲代码验证,下面给大家分享一下我的学习过程。

  9. Swift WKWebView的swift调用js

    不多说,直接上代码:在html里面要添加的的代码,显示swift传过去的参数:这样就实现了swift给js传参数和调用!

  10. 在 Swift 專案中使用 Javascript:編寫一個將 Markdown 轉為 HTML 的編輯器

    你有強烈的好奇心,希望在你的iOS專案中使用JavaScript。jscontext中的所有值都是JSValue對象,JSValue類用於表示任意類型的JavaScript值。因此,我們既需要寫Swift代碼也要寫JavaScript代碼。此外,我們還會在JavaScript中按照這個類的定義來創建一個對象并對其屬性進行賦值。從Swift中呼叫JavaScript就如介紹中所言,JavaScriptCore中最主要的角色就是jscontext類。一個jscontext對象是位於JavaScript環境和本

随机推荐

  1. Angular2 innerHtml删除样式

    我正在使用innerHtml并在我的cms中设置html,响应似乎没问题,如果我这样打印:{{poi.content}}它给了我正确的内容:``但是当我使用[innerHtml]=“poi.content”时,它会给我这个html:当我使用[innerHtml]时,有谁知道为什么它会剥离我的样式Angular2清理动态添加的HTML,样式,……

  2. 为Angular根组件/模块指定@Input()参数

    我有3个根组件,由根AppModule引导.你如何为其中一个组件指定@input()参数?也不由AppModalComponent获取:它是未定义的.据我所知,你不能将@input()传递给bootstraped组件.但您可以使用其他方法来做到这一点–将值作为属性传递.index.html:app.component.ts:

  3. angular-ui-bootstrap – 如何为angular ui-bootstrap tabs指令指定href参数

    我正在使用角度ui-bootstrap库,但我不知道如何为每个选项卡指定自定义href.在角度ui-bootstrap文档中,指定了一个可选参数select(),但我不知道如何使用它来自定义每个选项卡的链接另一种重新定义问题的方法是如何使用带有角度ui-bootstrap选项卡的路由我希望现在还不算太晚,但我今天遇到了同样的问题.你可以通过以下方式实现:1)在控制器中定义选项卡href:2)声明一个函数来改变控制器中的散列:3)使用以下标记:我不确定这是否是最好的方法,我很乐意听取别人的意见.

  4. 离子框架 – 标签内部的ng-click不起作用

    >为什么标签标签内的按钮不起作用?>但是标签外的按钮(登陆)工作正常,为什么?>请帮我解决这个问题.我需要在点击时做出回复按钮workingdemo解决方案就是不要为物品使用标签.而只是使用divHTML

  5. Angular 2:将值传递给路由数据解析

    我正在尝试编写一个DataResolver服务,允许Angular2路由器在初始化组件之前预加载数据.解析器需要调用不同的API端点来获取适合于正在加载的路由的数据.我正在构建一个通用解析器,而不是为我的许多组件中的每个组件设置一个解析器.因此,我想在路由定义中传递指向正确端点的自定义输入.例如,考虑以下路线:app.routes.ts在第一个实例中,解析器需要调用/path/to/resourc

  6. angularjs – 解释ngModel管道,解析器,格式化程序,viewChangeListeners和$watchers的顺序

    换句话说:如果在模型更新之前触发了“ng-change”,我可以理解,但是我很难理解在更新模型之后以及在完成填充更改之前触发函数绑定属性.如果您读到这里:祝贺并感谢您的耐心等待!

  7. 角度5模板形式检测形式有效性状态的变化

    为了拥有一个可以监听其包含的表单的有效性状态的变化的组件并执行某些组件的方法,是reactiveforms的方法吗?

  8. Angular 2 CSV文件下载

    我在springboot应用程序中有我的后端,从那里我返回一个.csv文件WheniamhittingtheURLinbrowsercsvfileisgettingdownloaded.现在我试图从我的角度2应用程序中点击此URL,代码是这样的:零件:服务:我正在下载文件,但它像ActuallyitshouldbeBook.csv请指导我缺少的东西.有一种解决方法,但您需要创建一个页面上的元

  9. angularjs – Angular UI-Grid:过滤后如何获取总项数

    提前致谢:)你应该避免使用jQuery并与API进行交互.首先需要在网格创建事件中保存对API的引用.您应该已经知道总行数.您可以使用以下命令获取可见/已过滤行数:要么您可以使用以下命令获取所选行的数量:

  10. angularjs – 迁移gulp进程以包含typescript

    或者我应该使用tsc作为我的主要构建工具,让它解决依赖关系,创建映射文件并制作捆绑包?

返回
顶部