2016-07-01 19 views
6

Quindi sto usando un oggetto javascript per visualizzare un elenco di elementi. Il mio scopo è simile al seguente:Pug `# {}` non riesce a caricare la variabile all'interno di `onclick`

{ 
      text: 'One', 
      url: 'index.pug' 
     }, 
     { 
      text: 'Two', 
      url: 'Two.pug' 
     }, 
     { 
      text: 'Three', 
      url: 'Three.pug' 
     } 
} 

La parte interessante è quando pug li rende. Sto rendendoli utilizzando qualcosa di simile:

div 
    ul.horizontalScroll 
     each item in params.apps 
      li 
       a(onclick="loadXMLDoc(#{item.url})") #{item.text} 

Quello che non riesco a capire è il motivo per item.text rende in modo corretto, ma scatto il collegamento non rumore metallico la funzione. Nell'ispettore Chrome, ho visto questo: <a onclick="loadXMLDoc(#)">One </a>. Perché l'argomento non arriva come index.pug come dovrebbe ??

+0

Hai provato a utilizzare una virgoletta singola anziché una virgoletta doppia? Lascia che cambi 'onclick =" loadXMLDoc (# {item.url}) "' dovrebbe essere 'onclick = 'loadXMLDoc (# {item.url})'' –

+0

Le virgolette singole mi danno un 'Uncaught SyntaxError: Token non valido o imprevisto' – WookieCoder

+0

Possibile duplicato di [Put Jade local variable in tag attribute] (http://stackoverflow.com/questions/5081534/put-jade-local-variable-in-tag-attribute) – Seth

risposta

3

Prova concatenare la variabile all'interno dell'attributo:

a(onclick="loadXMLDoc('" + item.url + "')") #{item.text} 
+0

Perfetto! (per i miei scopi, ho dovuto aggiungere singole virgolette su item.url, ma la tua soluzione ha risposto al problema). Non ho idea del perché non ci abbia già pensato. 'a (onclick =" dostuff ("+" '"+ item.url +"' "+") ") # {item.text} \t' – WookieCoder

+0

:) felice che abbia aiutato. Ho aggiornato la risposta. Puoi evitare la concatenazione ridondante che stai facendo spostando le virgolette singole nella prima e nell'ultima stringa. – Seth

+1

Giusto, ovviamente: 3 – WookieCoder

0

La soluzione accettata non ha funzionato per me. Sono stato in grado di andare avanti con qualcosa di leggermente diverso.

a(onclick="loadXMLDoc('#{item.url}')") #{item.text} 

Notare la differenza tra virgolette singole e doppie. Fai attenzione anche perché il completamento automatico del testo potrebbe provare ad aggiungere ancora più citazioni.

Questa soluzione funziona perché loadXMLDoc prevede una stringa. È necessario utilizzare caratteri di citazione diversi in modo che la stringa dell'URL diventi nidificata all'interno della stringa di attributo quando viene convertita in html.

Problemi correlati