由于之前,项目中的代码比较混乱,angular和jquery的混用,还有css等,写的非常混乱,因此,有重构的想法
项目中使用了angular-ui/bootstrap库,主要用了modal弹窗的组件
想在重构中,去除这个组件,自己动手撸一个。
之前,自己有写过一个modal弹窗插件,但是有一个问题,就是,之前的那个插件,必须事先要知道有多少弹窗,每一个弹窗都要写在页面内,这对有代码洁癖的我来说,简直是个灾难,不能忍。而且,多重弹出的话会有问题。
而angular-ui/bootstrap中的弹窗,用起来非常棒。于是决定,仿照这个,自己重新造个轮子。
一开始,考虑使用$http请求传过来的templateUrl,然后,在回调中,用$compile编译,最后,放在body下。
很快就遇到了第一个问题:关于controller的使用。
angular-ui中,controller函数,是作为一个参数,传递过去的,但是,在html结构中,并没有出现ng-controller。于是,排除了添加的页面,是用外层的一个大大的controller编译的可能。
找文档,上Stack Overflow,看源码,看了两三个小时,终于发现,一个名叫$controller的服务,结果发现还是不太对。
因为没有scope的话,这个服务是没有什么卵用的
然后,继续看源码,又发现一句话
$rootScope.$new()
这一句可以生成一个scope,于是,两个一结合,
就像一对狗男女结合在一起,就行了
最后说一句,请求模板文件的话,还是用$templateRequest这个服务比较好
写在最后:
并没有上代码,不是因为没写出来,而是因为懒
最后的愿望,希望一年之后,来看这篇帖子的时候,我还能看懂自己在说些什么