2016-07-01 8 views
6

私はアイテムのリストをレンダリングするためにjavascriptオブジェクトを使用しています。私のオブジェクトは次のようになります。Pug `#{}`は `onclick`の中で変数をロードできません

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

興味深い部分は、パグをレンダリングするときです。 item.textが正しくレンダリングなぜ私が把握することはできませんどのような

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

があるが、上の機能にpingを実行しないリンクをクリックしてください:私はこのようなものを使用してそれらをレンダリングしています。クロムの検査官で、私はこれを見た:<a onclick="loadXMLDoc(#)">One </a>。なぜそれが好きであるように引数がindex.pugとして通っていないのですか?

+0

二重引用符の代わりに一重引用符を使用しようとしましたか? "onclick =" loadXMLDoc(#{item.url}) "を' onclick = 'loadXMLDoc(#{item.url})'に変更することをお勧めします。 –

+0

一重引用符を使用すると、 'Uncaught SyntaxError:無効なトークンまたは予期しないトークン' – WookieCoder

+0

[Jadeローカル変数をタグ属性に入れてください]の可能な複製(http://stackoverflow.com/questions/5081534/put-jade-local-variable-in-tag-attribute) – Seth

答えて

3

は、属性内の変数を連結してみてください。

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

パーフェクト! (私の目的のために、item.urlを一重引用符で囲む必要がありましたが、あなたの解決策が問題に答えました)。なぜ私はこれについてまだ考えていないのか分かりません。 '(onclick =" dostuff( "+" '"+ item.url +"' "+") ")#{item.text} \t' – WookieCoder

+0

:)うれしかったです。私は答えを更新しました。一重引用符を最初の文字列と最後の文字列に移動することで、冗長連結を避けることができます。 – Seth

+1

もちろん、もちろん:3 – WookieCoder

0

受け入れソリューションは私のために動作しませんでした。私は少し違う何かで動くことができました。

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

一重引用符と二重引用符の違いに注意してください。また、テキストオートコンプリートでさらに引用符を追加しようとする可能性があるので注意してください。

このソリューションは、loadXMLDocに文字列が必要であるために機能します。別の引用符を使用して、URL文字列がhtmlに変換されたときに属性文字列の内部に入れられるようにする必要があります。

関連する問題