标记内或多或少是等价的,ng-model="my_data_binding 和 data-ng-model="my_data_binding" 也是如此。但是说话者表示 html ......" /> 标记内或多或少是等价的,ng-model="my_data_binding 和 data-ng-model="my_data_binding" 也是如此。但是说话者表示 html ......"> 标记内或多或少是等价的,ng-model="my_data_binding 和 data-ng-model="my_data_binding" 也是如此。但是说话者表示 html ......" />
我目前正在为 angular.js
寻找 this start tutorial video
在某个时刻(12'40" 之后),说话者指出属性 ng-app
和 data-ng-app=""
在 <html>
标记内或多或少是等价的,ng-model="my_data_binding
和 data-ng-model="my_data_binding"
也是如此。但是说话者表示 html 将通过不同的验证器进行验证,具体取决于使用的属性。
您能解释一下 ng-
前缀与 data-ng-
前缀这两种方式之间的区别吗?
好问题。区别很简单——这两个除了之间绝对没有区别,某些 HTML5 验证器会在 ng-app
之类的属性上抛出错误,但它们不会对任何前缀为 { 的东西抛出错误2},如 data-ng-app
。
因此,要回答您的问题,如果您希望更轻松地验证您的 HTML,请使用 data-ng-app
。
有趣的事实:您也可以使用 x-ng-app
来达到相同的效果。
Angular 对元素的标签和属性名称进行规范化,以确定哪些元素与哪些指令匹配。我们通常通过区分大小写的驼峰式规范化名称(例如 ngModel)来引用指令。然而,由于 HTML 不区分大小写,我们在 DOM 中以小写形式引用指令,通常在 DOM 元素上使用破折号分隔的属性(例如 ng-model)。规范化过程如下:从元素/属性的前面去除 x- 和 data-。将 :、- 或 _ 分隔的名称转换为 camelCase。以下是与 ngBind 匹配的元素的一些等效示例:
基于上面的陈述,下面都是有效的指令
1. ng-bind 2. ng:bind 3. ng_bind 4. data-ng-bind 5. x-ng-bind
不同之处在于自定义 data-*
属性在 HTML5 specification 中有效。因此,如果您需要验证您的标记,您应该使用它们而不是 ng
属性。
简短的回答:
ng-model
和 data-ng-model
相同且等价!
为什么?
原因:data- 前缀 HTML5 规范要求任何自定义属性都以 data- 为前缀。原因: ng-model 和 data-ng-model 都是相同且等效的。
AngularJS 文档 - 规范化 Angular 规范化元素的标签和属性名称,以确定哪些元素匹配哪些指令。我们通常通过区分大小写的驼峰式规范化名称(例如 ngModel)来引用指令。然而,由于 HTML 不区分大小写,我们在 DOM 中以小写形式引用指令,通常在 DOM 元素上使用破折号分隔的属性(例如 ng-model)。规范化过程如下: 1. 从元素/属性的前面去除 x- 和 data-。 2. 将 :, -, or_-delimited name 转换为 camelCase。例如,以下形式都是等效的并且匹配 ngBind 指令:
<div ng-controller="Controller">
Hello <input ng-model='name'> <hr/>
<span ng-bind="name"></span> <br/>
<span ng:bind="name"></span> <br/>
<span ng_bind="name"></span> <br/>
<span data-ng-bind="name"></span> <br/>
<span x-ng-bind="name"></span> <br/>
</div>
如果要使页面 HTML 有效,可以使用 data-ng- 而不是 ng-。
如果您想在将其提供给浏览器之前在服务器上操作 html 或 html-fragments,那么您肯定希望使用 data-ng-xxx 属性而不仅仅是 ng-xxx 属性。
它使您的 html 有效,这意味着它可以被 html(基于服务器的)解析器使用,例如 domdocument (php) 或其他。这些解析器经常在格式不正确的 html 上失败。 Angular 对属性进行规范化,但请记住,这是在客户端上,而不是在服务器上。
data-
和x-
似乎浪费了 CPU 周期。为什么不能将 HTML 验证规则更改为接受ng-
内容?data-*
attributes are the way to extend HTML。