2016-04-11 20 views
5

Desidero caricare dati aggiuntivi in ​​ciascuna opzione selezionata di tagli di Grails g:select. uscita richiesta è simile al seguente:Grails g: selezionare aggiungi attributi dati HTML 5

<select id="select"> 
    <option value="1" data-foo="dogs">this</option> 
    <option value="2" data-foo="cats">that</option> 
    <option value="3" data-foo="gerbils">other</option> 
</select> 

io non sono in grado di trovare un modo per aggiungere i dati aggiuntivi al taglib utilizzando gli attributi dei dati di HTML 5. Così come per ottenere l'output simile?

+1

Perché non si scrive un semplice TagLib per raggiungere questo obiettivo? – Armaiti

+1

Il tagLib incorporato non supporta questa funzione. Se ti serve questo, dovrai implementare il tuo. –

+0

Sì, l'ho fatto solo ma sono venuto qui per controllare se esiste o c'era qualche scorciatoia. Grazie per la tua risposta. – Chetan

risposta

0

Come indicato nei commenti sopra, al momento non è possibile. È necessario scrivere la propria libreria di tag per raggiungere questo obiettivo.

3

È possibile effettuare questa operazione (mis-) utilizzando una chiusura a rendere il valore (chiamato optionKey in Grails selezionare taglib) delle opzioni selezionate:

<g:select from="${books}" 
     optionKey="${{ book -> "${book.id}\" data-author=\"${book.author.name}"}}" 
     optionValue="title" 
     name="selectedBook"/> 

Questo renderà le opzioni con un attributo data-author:

<option value="1" data-author="Johann Wolfgang von Goethe">Faust</option> 

Questo funziona almeno in Grails 2.4.4 e Grails 3.1.5.

+0

Sembra che almeno Grails 3.2.2 (non sono tornato a guardare quando è stata introdotta la funzione) il tag g: select ora include un attributo dataAttrs che ti permette di aggiungi dati- * ai valori delle opzioni in un tag select. Fare riferimento qui: http://docs.grails.org/latest/ref/Tags/select.html – Aquatoad

0

È possibile ottenere risultato simile utilizzando le seguenti

<select id="select"> 
    <g:each in="${books}" var="book"> 
    <option value="${book.id}" data-foo="${book.slug}">${book.name}</option> 
    </g:each> 
</select>