[转载]angularjs按需加载js文件

源文章:http://www.2cto.com/kf/201408/324141.html

我们在AngularJS中可以根据网址不同直接切换view,动态加载网页模板,但是控制模板的控制器需要先定义好才可以,不能和网页模板同时加载,这样就造成整个网站的JS都要先加载完成。

requireJS是大家第一个想到的东西,但是体积有点大,github上就有个人用它写了Angular的动态加载controller模块,是通过js promise异步编程技术实现的,最后的解决很简单~~
首先在$routeProvider里面加resolve属性,

?
1
2
3
4
5
$routeProvider.
         when( '/phones' , {
                templateUrl: 'partials/phone-list.html' ,
                controller: PhoneListCtrl,
                resolve: PhoneListCtrl.resolve})


然后
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function PhoneListCtrl($scope) {
   //本身不用管,该怎么弄怎么弄
}
 
PhoneListCtrl.resolve = {
   delay: function($q) {
     var delay = $q.defer(),
     load = function(){
         $.getScript( '/js/xxxxx.js' ,function(){
         delay.resolve();
         });
     };
     load();
     return delay.promise;
   }
}

有了这个技术,我们的HybridApp就可以分成静态打包在原生应用里面的部分,和放在服务器上的动态部分,方便在不升级主App的前提下增加一些临时性的页面功能。具体应用场景大家自己想吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值