2012-02-06 10 views
11

Estoy evaluando Ember.js para mi próximo proyecto. Me encanta el mecanismo vinculante hasta ahora, pero tengo una pregunta sobre el enfoque. Según los documentos "Para saber qué parte de su HTML se actualizará cuando una propiedad subyacente cambie, Handlebars insertará elementos marcadores con un ID único". Probablemente puedo vivir con estas etiquetas, pero me distraen mucho (ver ejemplo a continuación). ¿Se discute el fundamento de este enfoque en cualquier lugar? ¿Se consideraron alternativas?¿Hay una alternativa para metamorph script tags en Ember.js?

<tbody> 
    <script id="metamorph-0-start" type="text/x-placeholder"></script> 
    <script id="metamorph-1-start" type="text/x-placeholder"></script> 
    <tr> 
     <td class="quote-name"> 
      <script id="metamorph-7-start" type="text/x-placeholder"></script> 
      Apple 
      <script id="metamorph-7-end" type="text/x-placeholder"></script> 
     </td> 
     <td class="quote-code">...</td> 
     <td class="quote-value">...</td> 
     <td class="quote-bid">...</td> 
     <td class="quote-offer">...</td> 
    </tr> 
    ... 
</tbody> 

Respuesta

8

La razón de que Metamorph utiliza etiquetas de script, como la conozco, es que las etiquetas de secuencia de comandos pueden aparecer en cualquier lugar dentro del DOM sin romper nada visualmente. Este hecho se vuelve muy importante cuando lo piensas, ya que permite una forma de hacer que casi cualquier cosa en el DOM pueda ser vista por el framework. Permitiendo así toda la "magia" vinculante que hace que Ember sea tan genial.

A principios del año pasado, recuerdo algunas de las discusiones en el canal de IRC sobre esto y sí, se consideraron las alternativas, pero se ganaron las etiquetas de secuencia de comandos.

+8

Excepto que afecta y rompe las cosas visualmente. No hay pseudo clases de CSS como: first-child: nth-child (impar) trabajo porque si esto. Eso es una cosa importante, las funciones completas en las especificaciones de CSS no se pueden usar. – Andri

+8

@Andri Use ': first-of-type',': nth-of-type', ... – pangratz

+2

@pangratz que no es compatible con todos los navegadores, y una gran cantidad de códigos existentes deben corregirse por otros motivos. Por ejemplo, jQuery.timeago se rompe debido a las etiquetas de script de Metamorph. –