【问题标题】:How can Angular use custom attributes without the data-* prefix, and everyone else says you shouldn't?Angular 如何使用没有 data-* 前缀的自定义属性,而其他人都说你不应该?
【发布时间】:2016-04-28 23:44:40
【问题描述】:
每个人(W3C 验证器、stackoverflow 帖子等)都说您应该在自定义属性前面加上 data-(例如 data-my-custom-attr="hey")。而且你不应该像这样使用它们:my-custom-attr="hey"。
然而 Angular 鼓励你使用 ng-click 等不带 data- 前缀的东西。
这只是最佳实践的问题吗?还是 Angular 有点特立独行?..
【问题讨论】:
标签:
angularjs
html
custom-data-attribute
【解决方案1】:
你为什么说 Angular 鼓励它?事实上,如果你在 Angular 文档中检查 normalizations 部分的指令,你会发现解析指令中的 Angular 会去除 data- 和 x- 前缀,因此你不必访问属性和名称指令,如
.directive('dataMyCustomDirective', function(){})
但没有什么告诉你不能或不应该使用 data- 或 x- 前缀如果你希望你的 HTML 被 w3c 验证器验证,我个人在开发中使用不带前缀的属性并使用 grunt 任务为生产添加前缀
【解决方案2】:
这是一个有趣的问题。但我认为这更多的是个人用途。我对使用公司前缀创建的所有属性和声明使用自定义前缀。例如mj-function -> 我的工作功能。没有什么能阻止我忽略data- 前缀。
这也有助于我使代码更有条理(如果使用第三方库)。因为很容易找到。 MJ 是我自己构建的代码。 ng 是 Angular。其他是第三个。
留意!
如果您使用 AngularJS,您必须避免的是使用前缀 ng 声明您的 attrs,因为这样您可能会与 AngularJS 的主要指令发生冲突。像 ngClick、ngChange、ngBlur 等...
但没有关于使用/不使用data- 前缀。