0

underscore.js のtemplateメソッドを使用すると、いくつかの奇妙な動作に遭遇しました。

var test = ['first', 'test'];
console.log(_.template('this is a <%= 1 %> ', test));

(フィドル: http://jsfiddle.net/adamb/mbD6E/ )

このスニペットは "this is a 1"を出力しますが、期待される結果は"this is a test"です。

エラーはスローされません。ソースコードを調べましたが、この結果について明確な説明はありません。テンプレートでのみ補間を使用する必要があります。を使用して配列を明示的にコレクションに変換しようとしました_.extend({}, test)が、サイコロはありません。

どうすればこれを機能させることができますか?

4

2 に答える 2

1

数値は有効な JavaScript 参照ではありません。

ここでは、おそらく次のように記述します<%= this[1] %>

それが機能しない場合は、配列をオブジェクト キーに渡します。

_.template('this is a <%= list[1] %> ', { list: test })
于 2013-11-06T19:53:05.703 に答える