Angular 中自定义指令的保留名称空间?

Reserved namespaces for custom directives in Angular?

我有一个用例,我需要使用 $compiler 服务手动编译指令。

我试图手动编译以下内容:<tr-item item="item"></tr-item>。在使用正确范围正确调用 $compile 后,没有返回任何元素。

经过一些调查,我注意到如果我将 tr-item 替换为 tr_item,我开始从 $compile 服务获取有效元素。

最后,我将命名空间从 tr-item 切换到 my-item,并注意到使用 "my" 的命名空间时,虚线和下划线语法都有效。

我创建了一个 plunker 来展示这个问题:http://plnkr.co/edit/kOv7oFnukZxHMEi3xasF

"tr" 是保留命名空间吗?如果是,那为什么要保留?

我尝试了其他匹配 html 元素的名称空间,"td" 也有同样的问题,但 "div" 工作正常。

如有任何见解,我将不胜感激!

$compile首先会使用jqLit​​e将DOM元素转换为JQuery元素,参考这个https://github.com/angular/angular.js/blob/master/src/ng/compile.js#L1179

jqLit​​e会将trtheadtd等保留标签映射为综合标签名,参考:https://github.com/angular/angular.js/blob/master/src/jqLite.js#L153

尝试将您的指令编译为属性,但最好避免使用此类保留标签名称。