码迷,mamicode.com
首页 > Web开发 > 详细

angularjs 高级玩法 创建递归的模板 兼容IE浏览器

时间:2015-08-06 13:20:31      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:angularjs   递归   

说到兼容IE7 IE8浏览器,angularjs官方已经明确说明:v1.3 之后的版本(含v1.3)都将不支持 IE7 IE8了,所以如果想要兼容IE7 IE8 就必须使用 v1.3以下的版本


上一篇文章说到递归玩法,但是IE7 IE8是玩不通的,原理我简单解释一下,

angularjs在加载一个模板的时候,会进行解析内容,把内容转换成Element(元素或者说节点),这里问题就来了,在IE9+ 、chrome这些浏览器,会把 <script>这种标签也当作是一种Element来处理,但是在IE7 IE8则不会,因此,加载模板时,angularjs不会把script的内容放到$templateCache缓存中,而ng-include实际上就是在$templateCache缓存中取模板的,所以ng-include取不到script的内容,导致IE7 IE8没有显示我们想要的结果


解决办法:

既然问题已经知道,那么我们只要在ng-include获取$templateCache的script之前,往$templateCache插入一个递归的代码,那就解决了

$templateCache有两个方法我们可以用到,get 和 put,

$templateCache.get( key )

$templateCache.put( key, value )

我们可以在控制器中,调用$templateCache.put方法,把原本script的id作为key,script里面的内容作为value,传给$templateCache那就可以实现原本的递归功能了

版权声明:本文为博主原创文章,未经博主允许不得转载。

angularjs 高级玩法 创建递归的模板 兼容IE浏览器

标签:angularjs   递归   

原文地址:http://blog.csdn.net/jshnr006/article/details/47314067

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!