对angular实现延迟加载template和controller
2024-09-15 03:53:18
1、在lib目录中添加 script.js 文件,并在index.html其他<script>之前引用之:
<script src="lib/script.js"></script>
2、在app.js中增加全局函数LazyLoadTemplate()和LazyLoadJs():
function LazyLoadTemplate(file) {
return function () {
return file;
}
} function LazyLoadJs(file) {
return {
deps: function ($q, $rootScope) {
var d = $q.defer();
$script(file, function () {
$rootScope.$apply(function () {
d.resolve();
})
});
return d.promise;
}
}
}
3、在app.config()函数中开始处增加:
var app = angular.module("app");
app.controllerProvider = $controllerProvider; // 主要是这个
app.compileProvider = $compileProvider; // 以下这两个备用
app.filterProvider = $filterProvider;
注意,要在config()的参数列表中增加相应的$controllerProvider、$compileProvider 和 $filterProvider。
4、在路由表中修改需要动态加载的状态路由配置,例如:
$stateProvider.state('page1', {
url: '/page1',
templateUrl: LazyLoadTemplate('page1.html'),
controller: 'Page1Ctrl',
resolve: LazyLoadJs("page1.js")
});
提示:
(1) 把 templateUrl属性的值改为调用函数 LazyLoadTemplate()。
(2) 增加 resolve属性,其值为调用函数LazyLoadJs()。
5、在控制器所在JS文件中,修改控制器的定义方式:
angular.module('app').controllerProvider.register("Page1Ctrl", function ($scope) {
$scope.title = "Page1";
});
提示:把原来的 controller() 函数调用改成 controllerProvider.register()。
6、从index.html中去掉对该控制器所在JS文件的引用,例如:
<!--<script src="page1.js"></script>-->
参考:
最新文章
- codevs 1063 合并果子//优先队列
- jquery自定义类似$.ajax()的方法
- JavaWeb学习----http协议
- Program A-归并排序
- 替换a链接的href和title
- 自定义jquery插件
- MongoDB安装,打开及增,删,改,查
- struts2对action中的方法进行输入校验---xml配置方式(3)
- Struts2--Action属性接收参数
- JavaWeb(六)Listener监听器
- bzoj 2242 [SDOI2011]计算器 快速幂+扩展欧几里得+BSGS
- java 实现文件上传下载以及查看
- nginx 出现504 Gateway Time-out的解决方法
- div行高不确定,文字和图片居中
- 一些NLP相关的JD,作参考
- ASP.NET学习笔记(3)——用户增删改查(三层)
- FJUT Home_W的gcd(乱搞)题解
- C# 通过IEnumberable接口和IEnumerator接口实现泛型和非泛型自定义集合类型foreach功能
- Storm一个executor里运行多个task是为了rebalance
- 使用SpringMVC搭建第一个项目
热门文章
- C/C++中的指针数组和数组指针
- php接口post提交方法 (改良版)
- PacketiX VPN搭建企业VPN
- 2016/12/14---- C3P0
- CentOS6开启FTP及telnet服务教程
- .NET高级工程师面试题之SQL篇
- swift 代码添加image
- Cannot assign to &#39;self&#39; outside of a method in the init family
- poj 2446 Chessboard (二分匹配)
- AngularJS学习--- 动画操作 (Applying Animations) ngAnimate step 12