2012-02-06 16 views
11

Sto valutando Ember.js per il mio prossimo progetto. Adoro il meccanismo vincolante finora, ma ho una domanda sull'approccio. Come per i documenti "Per sapere quale parte del codice HTML aggiornare quando una proprietà sottostante cambia, Handlebars inserirà gli elementi dell'indicatore con un ID univoco." Probabilmente posso vivere con questi tag ma sono molto dispersivi (vedi esempio sotto). La logica alla base di questo approccio è discussa ovunque. Sono state prese in considerazione alternative?Esiste un alternativa ai tag dello script metamorfico in 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> 

risposta

8

Il razionale che Metamorph utilizza tag di script, che ne so, è che i tag di script possono apparire all'interno del DOM da nessuna parte senza rompere nulla visivamente. Questo fatto diventa molto importante quando ci si pensa perché consente di creare praticamente tutto ciò che nel DOM è raggiungibile dal framework. Così abilitando tutta la "magia" vincolante che rende Ember così grande.

All'inizio dell'anno scorso ricordo alcune delle discussioni sul canale IRC riguardo a questo e sì sono state prese in considerazione alternative ma i tag script hanno vinto.

+8

Tranne che influenza e rompe le cose visivamente. Nessuna pseudo classe CSS come: first-child: nth-child (dispari) funziona perché se questo. È una cosa da sindaco, tutte le funzionalità delle specifiche CSS sono inutilizzabili. – Andri

+8

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

+2

@pangratz che non è supportato in tutti i browser e molti altri codici esistenti devono essere corretti per altri motivi. Ad esempio, jQuery.timeago si interrompe a causa dei tag di script Metamorph. –

Problemi correlati