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
首先会使用jqLite将DOM元素转换为JQuery元素,参考这个https://github.com/angular/angular.js/blob/master/src/ng/compile.js#L1179
jqLite会将tr
、thead
、td
等保留标签映射为综合标签名,参考:https://github.com/angular/angular.js/blob/master/src/jqLite.js#L153
尝试将您的指令编译为属性,但最好避免使用此类保留标签名称。
我有一个用例,我需要使用 $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
首先会使用jqLite将DOM元素转换为JQuery元素,参考这个https://github.com/angular/angular.js/blob/master/src/ng/compile.js#L1179
jqLite会将tr
、thead
、td
等保留标签映射为综合标签名,参考:https://github.com/angular/angular.js/blob/master/src/jqLite.js#L153
尝试将您的指令编译为属性,但最好避免使用此类保留标签名称。