compile - directivas angularjs
¿Cómo se usan los prefijos de atributo "x-" y "data-" en AngularJS (2)
De la especificación HTML5: http://www.w3.org/html/wg/drafts/html/master/single-page.html
Los nombres de atributos que comienzan con los dos caracteres "x-" están reservados para el uso del agente de usuario y se garantiza que nunca se agregarán formalmente al lenguaje HTML.
También:
Para las características de nivel de marcado que se utilizan con la sintaxis HTML , las extensiones deben estar limitadas a los nuevos atributos del formulario "
x-vendor-feature
", donde el proveedor es una cadena corta que identifica al proveedor responsable de la extensión y cuenta es el nombre de la característica. Los nuevos nombres de elementos no deberían ser creados. El uso de atributos para tales extensiones permite exclusivamente que las extensiones de múltiples proveedores coexistan en el mismo elemento, lo que no sería posible con los elementos. El uso del formulario "x-vendor-feature
" permite que las extensiones se realicen sin riesgo de entrar en conflicto con adiciones futuras a la especificación.
Soy nuevo en Angular e intento entender qué significan los prefijos "x-" y "data-". En la documentación de directivas ( http://docs.angularjs.org/guide/directive ) dice que estos prefijos harán que la directiva sea "compatible con el validador de HTML". ¿Qué significa esto exactamente?
La especificación HTML5 permite atributos arbitrarios siempre que estén prefijados con datos, por ejemplo:
<div data-myattribute=""></div>
Mientras que esto sería un HTML5 no válido:
<div myattrbute=""></div>
Para obtener más información sobre los atributos de datos, échale un vistazo aquí.
En cuanto a los atributos "x-", creo que te refieres a atributos y elementos "x:", que son específicos de la validación XHTML ...
Para ampliar esto, si tuviera que (por alguna razón) usar XHTML, puede definir atributos personalizados con el espacio de nombres como tal (y aquí estoy resumiendo la esencia):
<html xmlns:x="http://sample.com/mynamespace">
<body>
<div x:whatever=""></div>
<x:mytag></x:mytag>
</body>
</html>
donde la URL en xmlns es realmente solo para evitar conflictos entre elementos similares. Además, se podría proporcionar una DTD para los elementos y atributos personalizados con fines de validación como parte de su declaración DOCTYPE.
* el comportamiento en los navegadores va a variar con este enfoque xmlns.
En resumen, sin embargo: con la mayoría de los navegadores lanzados en los últimos tres años, o IE8 +, no tendrás que preocuparte por ninguna de estas cosas. Solo en situaciones muy específicas, realmente te importará.