2016-10-27 8 views
0

私はUnderscore.jsを使ってテンプレートを作成しています。テンプレートの各ボタンを関連するレスポンスに渡したいと思います。私は、応答IDを使用してこれを行うことができます:Underscoreはパラメータとしてオブジェクトを渡します

<% _.each(responses, function(response){ %> 
    <button class="btn btn-sm" onclick="citeResponse('<%= response._id %>')">Cite Response</button> 
<% }); %> 

して、IDに基づいて応答を見つけるには

$.grep(responses, function(e){ return e._id == id; }); 

を使用しています。しかし、これは、私が実際に何が必要なのかを正確に知っているときに、配列を繰り返し処理します。私がやってみました:

<% _.each(responses, function(response){ %> 
    <button class="btn btn-sm" onclick="citeResponse('<%= response %>')">Cite Response</button> 
<% }); %> 

しかし、citeResponseは常に[Object object]を取得します。実際のオブジェクトを返すにはどうすればいいですか?

+0

あなたは自分の機能にIDを設定し、それを使用することはできませんか?テンプレートのアンダースコアを使用していないので、ここでは「テンプレート」という言葉を使用することには注意が必要です。 –

+1

'onclick'属性を使うのは古い学校のようなものです。通常は、イベントハンドラをアタッチして、適切な 'response'オブジェクトを接続するか、' data-response-id'アトリビュートを設定し、イベントハンドラにどこかにid->オブジェクトマップを表示させます。 –

+0

@muistooshortこのようなイベントハンドラの例は何ですか? – db2791

答えて

0

引数を渡したいものがJSONオブジェクトの場合は、JSON.stringify(response)を使用してstringにシリアル化することができます。その後、あなたのciteResponse関数で、JSON.parse(argument)でオブジェクトに変換する関数を解析します。

<% _.each(responses, function(response){ %> 
<button class="btn btn-sm" onclick="citeResponse('<%= JSON.stringify(response) %>')">Cite Response</button> 
function citeResponse(response) { 
    response = JSON.parse(response); 
    ... 
} 
関連する問題