2012-09-24 4 views
48

유성을 사용하여 맞춤 도우미를 만들려고합니다.유성과 핸들 바 도우미에서 여러 매개 변수를 사용하는 방법?

Template.myTemplate.testHelper = function(foo, bar, options) { 
    console.log(foo); 
    console.log(bar); 
} 

내 템플릿은 다음과 같습니다 : 다음과 같이 내 도우미를 정의하기 위해 노력했다 https://github.com/meteor/meteor/wiki/Handlebars

: 여기에 문서에 따라 내 콘솔 출력을 보면

<template name="myTemplate"> 
    {{#testHelper "value1" "value2"}} 
    {{/testHelper}} 
</template> 

, 내가 예상 출력 2 줄을보십시오 :

value1 
value2 

그러나 내 콘솔은 다음과 같습니다.

value1 
function (data) { 
    // don't create spurious annotations when data is same 
    // as before (or when transitioning between e.g. `window` and 
    // `undefined`) 
    if ((data || Handlebars._defaultThis) === 
     (old_data || Handlebars._defaultThis)) 
     return fn(data); 
    else 
     return Spark.setDataContext(data, fn(data)); 
    } 

참고 : 유성과 핸들 바는 완전히 새롭습니다. 나는 밑줄을 사용하면 더 행복 할거라 생각하지만, 유성우에 대한 문서는 거의 전적으로 밑줄을 긋는다. 내 도우미 기능을 잘못 정의하면됩니까? 그것은 두 번째 매개 변수 "bar"를 보지 않고 대신 옵션으로 해석하는 것 같습니다. (주의 : 만약 내가 console.log (옵션)을 반환합니다 'undefined').

유성 버전 0.4.0 (8f4045c1b9)

답변

53

당신의 논리가 좋은, 그냥 testHelper 기능이 단지에 MyTemplate 템플릿에 정의되어 있음을 염두에 템플릿

<template name="myTemplate"> 
    {{testHelper "value1" "value2"}} 
</template> 

베어 일부 변경합니다. 당신이 testHelper을 등록 할 경우

세계적으로 대신으로 값을 전달하는이

Handlebars.registerHelper('testHelper', function(foo, bar){ 
    console.log(foo); 
    console.log(bar); 
}); 

재밌게

+2

{{#if}} Content {{if if}} 스타일 도우미가 필요한 경우 유효하지 않습니다. – Donflopez

+8

그런 시나리오에서 도우미를 결합 할 수 있습니다 :'{{#if testHelper "v1" "v2"}} 어떤 템플릿 {{/ if}}' – Matanya

+0

'Handlebars.registerHelper'는 어디에 있어야합니까? –

1

추가

<template name="myTemplate"> {{testHelper "value1" "value2"}} </template>

같은 것을 수행해야합니다 매개 변수는 매개 변수로 함수를 전달합니다. 코드는 다음과 같습니다.

<template name="myTemplate"> 
    {{ testHelper1 (testHelper2 "value2") }} 
</template> 

건배 !!!!!

관련 문제