AngularJS:将子指令转换为父指令

时间:2013-10-08 12:24:56

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我是Angular的新手,并且一直在尝试使用小样本来学习代码。 首先,我要感谢stackoverflow.com上发布的精彩解决方案。 从不必要的调试中保存了这么多个小时!

我正在构建一个简单的展开器折叠组件。代码可用 在一个有角度的js电子书中。

我为同一个http://plnkr.co/edit/f2u32x2w0FJK1AzvVPEx?p=preview创建了一个插件 该组件运行良好。除了在IE 8中,我收到以下错误:

  

TypeError:Object不支持此属性或方法未定义

该组件呈现正常。但是总会出现这种错误。

事实证明,罪魁祸首就是这条线:

<expander class='expander' ng-repeat='expander in expanders' expander-title='expander.title'>{{expander.text}}</expander>

,特别是部分:

{{expander.text}}

有人可以告诉我,我在这里做错了什么吗?我只是将child指令的内容转换为其模板。然后我将孩子转入父母。 这是什么问题? :(

2 个答案:

答案 0 :(得分:1)

问题在于您使用了IE无法识别的自定义HTML元素(<expander>)。在受支持的元素(例如,<div expander>...</div>)或JavaScript中使用属性表示法,创建元素以便IE识别它:

document.createElement('expander');

<强>参考

  1. AngularJS: Internet Explorer Compatibility

答案 1 :(得分:1)

好吧,你可能会考虑在Angular脚本之前加入IE8的“全面”jQuery。 这可以消除错误,直到问题可以在AJS / jQLite本身修复......

备注:只接受jQuery&lt; 2.0,因为2.0+不兼容IE8。