博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用ocLazyLoad加载controller的方法和问题
阅读量:6158 次
发布时间:2019-06-21

本文共 1332 字,大约阅读时间需要 4 分钟。

  hot3.png

   在AngluarJs中,可以利用LazyLoad方法可以异步的加载controller。在ui-router中写法如下:

1  .state('app.projectList', {  2             url: '/plist?page',  3             templateUrl: 'admin/projectList.html',  4             resolve: {  5                 deps: ['$ocLazyLoad',  6                     function ($ocLazyLoad) {  7                         return $ocLazyLoad.load('admin/projectList_ctrl.js');  8                     }  9                 ] 10             } 11         })

在上述代码中,templateUrl是模板页面,projectList_ctrl.js中设置了controller。

同时,在ui-router中给出,利用resolve可以对contorller需要的数据进行预加载。这样就不用在controller中异步的去等待数据的载入。可以参考,或者

但是,如果采用异步加载控制器的方式,就会提示错误:

Error: $injector:unpr Unknown Provider:

这样因为,在页面中,采用了ng-controller的方式进行绑定,所以就无法借助resolve方法进行数据预加载。

为了解决这种办法,可以采用如下方法:

1  resolve: {  2                 myData:function($http){  3                     ... ...  4                 },  5                 deps: ['$ocLazyLoad','myData',  6                     function ($ocLazyLoad,myData) {  7                         app.constant('myData',myData);  8                         return $ocLazyLoad.load('admin/projectList_ctrl.js');  9                     } 10                 ] 11  12             },

也就是先让deps依赖myData,然后,在加载加载controller之前,手动的将数据注册为常量或者变量,在angluarjs中,常量变量也是Provider 。 这样在controller中就能通过加载依赖,获取到myData的值了。

转载于:https://my.oschina.net/felony/blog/855441

你可能感兴趣的文章
我的友情链接
查看>>
在C#调用C++的DLL简析(二)—— 生成托管dll
查看>>
Linux macos 常用终端操作
查看>>
企业网络的管理思路
查看>>
Linux磁盘分区与挂载
查看>>
J2se学习笔记一
查看>>
DNS视图及日志系统
查看>>
老李分享:Android性能优化之内存泄漏 3
查看>>
mysql命令
查看>>
来自极客标签10款最新设计素材-系列七
查看>>
极客技术专题【009期】:web技术开发小技巧
查看>>
PHP 简单计算器代码实现
查看>>
正则表达式的知识普及
查看>>
docker使用笔记
查看>>
华为eNSP模拟器上实现FTP服务
查看>>
【全球AI人才排行榜】美国第一,中国仅排名第7
查看>>
微信小程序输入框input
查看>>
MySql字符串函数使用技巧
查看>>
Doc2Vec,Word2Vec文本相似度 初体验。
查看>>
系统ghost后变成一个盘了别的分区的文件怎么找回
查看>>