2017-11-09 4 views
0

私はanglejsオートコンプリートディレクティブの文字列定数のコレクションを初期化する必要があります。たぶん別の方法がありますが、関連するCtrlキーに値を注入します。この目的のために私はindex.scala.htmlのようにこれらの値を定義します。Scalaコレクションの要素をエスケープ/引用してAngularJSの初期化にパスする方法は?

<script> 
    angular.module("backTestDemoApp").value("ccyPairs", 
     [ 
      'CHFEUR', 'CHFGBP', 'CHFJPY', ... 
     ] 
    ); 
</script> 

ではなく、私はHTMLで取得すると、このです:

<script> 
    angular.module("backTestDemoApp").value("ccyPairs", 
     [ 
      &amp;quot;CHFEUR&amp;quot;,&amp;quot;CHFGBP&amp;quot;,&amp;quot;CHFJPY&amp;quot;,&amp;quot;CHFUSD&amp;quot;,&amp;quot;EURCHF&amp;quot;,&amp;quot;EURGBP&amp;quot;,&amp;quot;EURJPY&amp;quot;,&amp;quot;EURUSD&amp;quot;,&amp;quot;GBPCHF&amp;quot;,&amp;quot;GBPEUR&amp;quot;,&amp;quot;GBPJPY&amp;quot;,&amp;quot;GBPUSD&amp;quot;,&amp;quot;JPYCHF&amp;quot;,&amp;quot;JPYEUR&amp;quot;,&amp;quot;JPYGBP&amp;quot;,&amp;quot;JPYUSD&amp;quot;,&amp;quot;USDCHF&amp;quot;,&amp;quot;USDEUR&amp;quot;,&amp;quot;USDGBP&amp;quot;,&amp;quot;USDJPY&amp;quot; 
     ] 
    ); 
</script> 

<script> 
    angular.module("backTestDemoApp").value("ccyPairs", 
     [ 
      @CcyPair.values.map("'%s'".format(_)).mkString(",") 
     ] 
    ); 
</script> 

私はHTML出力としてこれを取得したいのですが:CcyPairはScalaの列挙型であることに注意してください

また、各要素を一重引用符または二重引用符のHTMLコードで折り返してみましたが、Playテンプレートによってガベージバックされています。

@CcyPair.values.map("&#39;%s&#39;".format(_)).mkString(",") 

答えて

0

OK解決策が見つかりましたPlay Template documentation。解決策は、@Html(_)にコードをラップして、自動エスケープからのTwirlの防止と、その代わりに生の出力をそのまま使用することです。したがって、完全なソリューションは、

<script> 
    angular.module("backTestDemoApp").value("ccyPairs", 
     [ 
      @Html(CcyPair.values.map("'%s'".format(_)).mkString(",")) 
     ] 
    ); 
</script> 
です。
関連する問題