2014-12-26 3 views
1

템플릿 내부에서 호출되는 함수가 정의되지 않은 경우를 제외하고는 완전히 렌더링 된 Underscore.js 템플릿이 있습니다. 예를 들면 다음과 같습니다.Underscore.js 템플릿에서 함수가 정의되지 않았습니다.

<span class='<% checkClass(oldValue, newValue) %>'> 

함수 자체가 템플릿 외부에서 완전히 작동하고 예상대로 클래스 이름을 반환합니다. 밑줄 템플릿에는 범위가 있습니까?

UPD : 그 템플릿을 정의라고하는 방법은 다음과 같습니다

(내가 생각하는) 그냥 알아 낸
function checkClass() {... return 'Something' ...} 

pData = [Object]; //Just for reference 

var rowsTpl = _.template("<span class='<% checkClass(oldValue, newValue) %>'>"); 

_.each(pData, function (vals, name) { 

    prOutput = rowsTpl(vals); 

    $(this.elem).html(prOutput); 

}); 
+1

이 템플릿을 렌더링/호출하는 방법을 추가 할 수 있습니까? 참고 : 명시 적으로 데이터 및 함수를 템플릿으로 개체로 전달해야합니다 (사용할 수있는 모든 함수 포함). –

+0

물론 원래 게시물에서 업데이트되었습니다. 설명서에 대한 내용이 명확하지 않습니까? 당신은 그것에 대해 조금 더 말할 수 있습니까? 여러 객체를 전달할 수있는 방법이 있습니까? –

답변

1

올바른 방법. 내가 checkClass 기능 FUNC에서 객체와 oldValue입니다NEWVALUE에 접근하고 있음을,

var rowsTpl = _.template("<span class='<% func.checkClass(val.oldValue, val.newValue) %>'>"); 

공지 사항 : 내 경우에는, 내가 필요한 기능이나 데이터를 포함한 템플릿 내 자신의 개체를 통과해야val 개체. 다음은 선언문입니다.

_.each(pData, function (vals, name) { 

    outPut += rowsTpl({ 
     name: name, 
     val: vals, 
     func: { 
      checkClass: checkClass, 
      anyOtherThing: thing 
     } 
    }); 

});