2012-06-02 9 views
7

Vorrei poter passare un oggetto con coppie chiave/valore che rappresentano attributi per un elemento. È possibile con Jade?Espansione di un oggetto per impostare attributi in Jade

Qualsiasi soluzione che mi consenta di passare una raccolta di attributi nel mio modello sarebbe sufficiente, ma la possibilità di combinare attributi dichiarati esplicitamente con attributi estratti da un oggetto (come di seguito) sarebbe l'ideale.

La seguente sintassi non funziona, è solo un esempio di cosa mi piacerebbe fare.

Per esempio, se ho superato questo:

{ 
    name:'username', 
    value:'bob', 
    attributes: { 
     maxlength: 16 
    } 
} 

a questo modello:

input(name=name, value=value, attributes) 

L'output desiderato sarebbe:

<input name="username" value="bob" maxlength="16" /> 

risposta

5

Dato che sei un parte di this issue su GitHub, probabilmente già sapete la risposta. Ma, per chiunque altro, ecco la risposta:

Jade:

input.foo(name=name value=value)&attributes(attrs) 

questi dati a vostra funzione di rendering:

{ 
    name: 'username', 
    value: 'bob', 
    attrs: { 
     maxlength: 16 
    } 
} 

uscita:

<input name="username" value="bob" class="foo" maxlength="16"/> 
+2

Apprezzo la risposta. Questo è stato qui per un po 'e avevo onestamente dimenticato che era qui. Come indicato nel problema github: ** e gli attributi non sfuggono all'output, quindi utilizzali con cautela ** – Prestaul

+0

Buono a sapersi. Non l'ho capito. – Jonathan

0

è necessario passare un oggetto nome o utilizzare la parola chiave "globale" in questo modo:

partial('myview', { { 
    name:'username', 
    value:'bob', 
    attributes: { 
     maxlength: 16 
    } 
}, as: global }); 

altrimenti è necessario assegnare un nome al proprio oggetto e accedervi tramite tale ambito.

Check out the docs

+0

Questo doesn' t, in ogni caso, affrontare la sostanza della domanda. Sto cercando di capire come prendere un oggetto che contiene un elenco di attributi e applicare tali attributi a un tag nel mio modello. Per esempio. 'input (attributes)' dove attributi è un oggetto con nomi di attributi come chiavi e valori di attributo come valori. Non ho bisogno di rinominare i "locali". – Prestaul

+0

scuse Prestaul, ho frainteso la domanda. Per favore pubblica la tua risposta se e quando la trovi. – jwerre

+0

Nessun problema. Andrà bene. – Prestaul

Problemi correlati