说到兼容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那就可以实现原本的递归功能了
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-04 18:30:56