带有连字符的 HTML 元素属性名称会自动转换为驼峰式
Posted
技术标签:
【中文标题】带有连字符的 HTML 元素属性名称会自动转换为驼峰式【英文标题】:HTML element attribute names with hyphens are auto-converted to camelcase 【发布时间】:2012-12-26 16:50:49 【问题描述】:我正在构建一个自定义 AngularJS 指令来创建一个谷歌地图,并且我已经在我的标签内的自定义属性中存储了一些谷歌地图选项:
<googlemap zoom-control="true" …></googlemap>
Angular 的指令编译方法有参数(tElement, tAttrs, transclude)
;当我将tAttrs
登录到控制台时,该对象的属性名称已将连字符转换为驼峰式:
谁在做这件事——Angular 还是浏览器(在 Firefox 和 Chrome 中检查)?我可以依赖这种行为吗?
附:当我检查 DOM 时,html 元素的属性仍然有连字符。
【问题讨论】:
【参考方案1】:Angular 正在这样做。是的,您可以信赖它:
来自Attributes 页面:
指令编译/链接函数之间的共享对象,其中包含规范化的 DOM 元素属性。这些值反映了当前的绑定状态 。需要进行规范化,因为所有这些在 Angular 中都被视为等效:
<span ng:bind="a" ng-bind="a" data-ng-bind="a" x-ng-bind="a">
【讨论】:
谢谢!我尝试在文档中搜索“连字符”和“破折号”,但从未得到该页面。我知道ng:bind
vs ng-bind
vs data-ng-bind
但我没有意识到 Angular 会将属性名称转换为 json 友好的名称。顺便说一句,我正在使用该服务并且它工作得很好(但我想看看我是否可以用“Angular 方式”来做到这一点)。
@jacob 我昨天再次查看了您的服务...您最好保持原样。我不确定如何向 HTML 添加指令,然后封装执行 DOM 操作的 addListner 内容,因为所有 HTML 都是由 Google API 添加的。 (对于其他读者,我们正在讨论this service)。
好的,谢谢。我会将它添加到积压的末尾,以便在其他所有操作完成后查看它。谢谢!以上是关于带有连字符的 HTML 元素属性名称会自动转换为驼峰式的主要内容,如果未能解决你的问题,请参考以下文章
Typescript - 从带有日期字符串的 Json 字符串自动转换为带有 Date 属性的对象
当属性名称包含特殊字符时,使用 xslt 转换 xml 结果后,输出未以 HTML 格式显示