Sono nuovo in Angular e sto cercando di capire cosa significano i prefissi "x-" e "data-". Nella documentazione delle direttive (http://docs.angularjs.org/guide/directive) si dice che questi prefissi renderanno la direttiva "HTML validator compliant". Cosa significa esattamente questo?Come sono gli attributi prefissi "x-" e "data-" utilizzati in AngularJS
risposta
Le specifiche HTML5 permette di attributi arbitrari fintanto che stanno prefisso dati- in questo modo:
<div data-myattribute=""></div>
considerando che il presente sarebbe HTML5 non valida:
<div myattrbute=""></div>
For more information on data- attributes, have a look here.
Per quanto riguarda gli attributi "x-", penso che intendiate "x:" attributi ed elementi, che sono specifici per la validazione XHTML ...
Per espandere su questo, se si dovesse (per qualche motivo) stia usando XHTML, è possibile definire gli attributi personalizzati con namespacing in questo modo (e io sono solo che riassume l'essenza qui):
<html xmlns:x="http://sample.com/mynamespace">
<body>
<div x:whatever=""></div>
<x:mytag></x:mytag>
</body>
</html>
dove l'URL in xmlns serve solo a evitare conflitti tra elementi simili. Inoltre, una DTD per gli elementi e gli attributi personalizzati potrebbe essere fornita a scopo di convalida come parte della dichiarazione DOCTYPE.
* il comportamento nei browser sta per variare con questo approccio xmlns.
In sintesi, però: Con la maggior parte dei browser rilasciati negli ultimi tre anni, o IE8 + non dovrete preoccuparvi di nessuna di queste cose. Solo in situazioni molto specifiche ti interesserà davvero.
Dalla specifiche HTML5: http://www.w3.org/html/wg/drafts/html/master/single-page.html
nomi degli attributi che iniziano con i due personaggi "X-" sono riservati per l'uso user agent e sono garantiti per non essere formalmente aggiunto linguaggio HTML.
anche:
Per le funzioni di livello markup che sono destinati all'uso con the HTML syntax, estensioni dovrebbero essere limitati a nuovi attributi della forma "
x-vendor-feature
", dove venditore è una breve stringa identifica il fornitore responsabile dell'estensione e la funzionalità è il nome della funzione. I nuovi nomi di elementi non dovrebbero essere creati. L'utilizzo di attributi per tali estensioni consente esclusivamente la coesistenza di estensioni di più fornitori sullo stesso elemento, , che non sarebbe possibile con gli elementi. L'utilizzo del modulo "x-vendor-feature
" consente di estendere le estensioni senza il rischio di conflitto con future aggiunte alle specifiche.
Mi spingerei a dire che il prefisso "x-" è il modo CORRETTO usare angolare se si desidera convalidare il markup. Sono davvero dati. Dal progetto W3C: "Per le funzionalità a livello di markup ... le estensioni dovrebbero essere limitate ai nuovi attributi del modulo 'x-vendor-feature'" Gli attributi Ng con il prefisso x si adattano splendidamente a questa descrizione. –
+1. La formulazione qui sembra riferirsi ai venditori di browser piuttosto che alle librerie/quadri? Indipendentemente da ciò, questo mi sembra più corretto rispetto all'uso di un prefisso dati in quanto è più specifico del framework rispetto ai bit di dati che si desidera collegare (e segue anche il prefisso x-vendor della bozza). – wbyoung
Sono d'accordo con wbyoung, per la lettera della legge x- è riservato per il browser, non per estensioni o framework. Tuttavia, penso anche che dovrebbero emendare la legge per includere questo utilizzo, in quanto 'x-ng-feature' appare come una convenzione semanticamente corretta. – misteraidan
Nel documento i collegamenti OP dicono che 'data-myattribute' e' x-myattribute' sono conformi al validatore HTML. –
Beh, non sono sicuro di quale validatore usi l'autore del documento ... ma l'attributo x è attualmente [non nelle specifiche] (http://www.w3.org/html/wg/drafts/html/master/ singolo-page.html). –
Abbastanza corretto, ho provato a trovare maggiori informazioni su 'x-' ma come puoi immaginare il termine è impossibile per Google. Si presenta principalmente nelle funzionalità sperimentali del browser come 'x-moz-errormessage' e' x-webkit-speech'. –