2016-10-27 5 views
0

저는 Underscore.js를 사용하여 템플릿을 만듭니다. 템플릿의 각 버튼을 관련 응답에 전달하려고합니다. 나는 함께, 응답 ID를 사용하여이 작업을 수행 할 수 있습니다 :밑줄 매개 변수로 객체를 전달하십시오.

<% _.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-> object map을 표시 할 수 있습니다. –

+0

@muistooshort 이러한 이벤트 처리기의 예는 무엇입니까? – db2791

답변

0

인수를 전달하려는 항목이 JSON 객체 인 경우 JSON.stringify(response)을 사용하여 문자열로 직렬화 할 수 있습니다. 그런 다음 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); 
    ... 
}