2015-01-03 2 views
6

템플릿 안에 배치 할 수있는 Meteor 패키지를 쓰려고합니다. 그래서 나는 처음으로 도우미를 등록하려고 시도했다.Meteor - What is Spacebars.kw {hash : Object}

Template.registerHelper('testHelper', function(a, b) { 
     console.log(a); 
     console.log(b); 
}) 

나는 /packages 내부의 패키지를 추가 한, 나는 {{testHelper "hello" "meow"}} 추가 내 클라이언트 템플릿에서 콘솔 내가 기대했던 인 hellomeow을 기록.

{{testHelper "hello"}}을 추가했을 때 두 번째 매개 변수로 아무 것도 전달되지 않았기 때문에 콘솔에 hellonull을 기록 할 것으로 예상했습니다. 하지만 그 대신에 hello 및 객체를 반환했습니다. Spacebars.kw {hash: Object}

이것은 무엇입니까? Spacebars.kw {hash: Object}? 대신 null을 돌려 주려면 어떻게해야합니까?

답변

13

Spacebars.kw에는 입력 매개 변수의 해시가있는 hash 개체가 포함되어 있습니다.

메테오에는 메소드를 일치시키는 두 가지 메소드가 있습니다. 하나는 매개 변수가 직접 입력되는 직접 일치입니다 (예 : {{testHelper "variable1" "variable2" "variable3"}}). 변수 1-3이 a, b 및 c와 각각 일치하는 경우 function(a,b,c)과 일치합니다. A는 Spacebars.kw 객체이고

{{testHelper a="variable1" b="variable2" c="variable3"}} 

이것은 function(a) 단일 파라미터를 줄 것이다 :

입력 번째 방법은

해시를 사용한다.

는 하위 객체를했을 Spacebars.kw 개체가 일치하는 구조로 hash라고 :

{ "a" : "variable1", 
    "b" : "variable2", 
    "c" : "variable3" } 

유성 직접 첫째 PARAM을 일치하려고 시도하지만, 이후의 매개 변수는 두 번째 넣다 해시로까지 일치 할 것이다 {{testHelper 'hello'}}을 사용하는 경우와 같이 입력이 비어있는 경우 b이 null이 될 수 있으므로 해시 대신 제공됩니다.

일반적으로 this로 주어 지므로 Spacebars.kw 객체로 b를 얻으면 두 번째 입력이 없다고 가정 할 수 있습니다.

{{testHelper text="Hello"}} 
{{testHelper text="Hello" othertext="Hellooo"}} 

및 도우미

:

Template.registerHelper('testHelper', function(kw) { 
    console.log(kw.hash.text); 
    console.log(kw.hash.othertext); 
}); 
+0

당신이 스타가있어, 다시 한 번 Akshat 감사를 대안은 당신이 해시 값이 null 있는지 확인 바로 다음 해시 스타일 선언을 사용할 수 있습니다! 난 해시 스타일 선언을 따르고 그것은 잘 작동합니다. 나는 새로운 질문으로 게시 할 후속 질문이 있습니다. 그건 그렇고,이'Spacebars.kw'가 문서화되어 있습니까? 문서에서 찾을 수 없으며 문서에 추가 할 수 있습니까? – dayuloli

+0

kw는 무엇을 나타 냅니까? –

관련 문제