parameters
  • handlebars.js
  • partials
  • 2016-07-27 4 views 3 likes 
    3

    블록 도우미 #each으로리스트를 만들지 만, 각 루프 내에서 변수를 전달할 수는 없습니다.핸들 바 : 각각 내부의 부분 변수로 전달

    {{#each a-z.letters}} 
        {{this}} /*[1]*/ 
        <li class="list-inline__item"> 
         {{>button btn="btn-text" addClass='-large' link='letter/{{this}}' label='{{this}}'/*[2]*/}} 
        </li> 
    {{/each}} 
    

    부분 링크 :

    <a href="{{link}}" class="btn-text {{addClass}}">{{label}}</a> 
    

    출력은 : I 원한다면

    <ul class="list-inline"> 
        A /*[1]*/ 
        <li class="list-inline__item"> 
         <a href="letter/{{this}}/*[2]*/" class="btn-text -large">{{this}}/*[2]*/</a> 
        </li> 
        .... 
    

    [1] 다만 테스트하고

    작동

    [2] 합격 부분적으로는 내 매개 변수를 렌더링하지 않습니다.

    업데이트

    이렇게하면 내 href를 URL로 확장 할 수 있습니다. 부분

    Handlebars.registerHelper('updateLink', function(options){ 
        var insertAt = "href="; 
        var content = options.fn(this).trim(); 
        var pos = content.indexOf(insertAt) + insertAt.length+1; // +1 for the quotation marks 
        content = content.slice(0, pos) + options.hash.url + content.slice(pos, content.length); 
        return new Handlebars.SafeString(content); 
    }); 
    

    링크 : 당신은 중괄호 세트 안에 이미있는 경우

    {{#updateLink url="letters/"}} 
        {{>button link=this label=this btn="btn-text" addClass='-large'}} 
    {{/updateLink}} 
    

    답변

    7

    당신은 데이터 멤버를 평가하기 위해 {{}} 괄호 구문을 사용할 수 없습니다. 당신은, 그러나, 단순히 따옴표로 포장하지 않고 멤버를 참조 할 수 있으며,이 평가됩니다 : 당신은 내 예를 들어 위의 link 값으로 "편지 /"접두사를 포함하지 않습니다 것

    {{>button btn="btn-text" addClass='-large' link=this label=this}} 
    

    . 핸들 막대에는 문자열을 연결하는 방법이 없습니다. 이를 위해 다음 옵션 중 하나를 선택할 수 있습니다.

    • 도우미 (본인 또는 다른 사람)를 사용하십시오.
    • 접두어를 부분 매개 변수에 추가 매개 변수로 전달하십시오.
    • 부분 템플릿의 접두사를 하드 코드합니다.
    • 템플릿 데이터에 연결된 문자열을 포함하십시오 (a-z.letters).

     관련 문제

    • 관련 문제 없음^_^