2016-07-20 1 views
1

topics는 몇 가지 문서를 반환하는 모음입니다. 각 문서에는 몇 개의 필드가 있습니다. 필드 중 하나는 문자열 배열입니다. 반환되는 각 문서에 대해 라디오 버튼 그룹으로 문자열 배열의 값을 나타내려고합니다. 각 그룹에게 고유 한 이름을 부여 할 수는 없습니다. 나는 console.log 문을 시도하고 radiobutton 그룹이 좋았지 만 도우미가 반환 된 문서의 수보다 더 많은 시간이 호출되면 엉망이된다.문서로 반환 된 각 배열에 대한 라디오 버튼 그룹 만들기

내 HTML

<template name=topics> 
    {{#each topics}} 
    <tr> 
     <td><input type="checkbox" name="selectone" id="{{uniqueid}}"/></td> 
     <td><textarea rows=4 name="topicname" readonly>{{name}} </textarea></td> 
     <td><input type="text" value="{{dateCreated}}" name="datecreated" readonly/></td> 
     <td> 
     {{#each choices}} 

      {{>radiogroup}} 

     {{/each}} 

     </td> 
     <td><a href="#" name="edittopic">Edit</a></td> 
    </tr> 

    {{/each}} 
</template> 

<template name='radiogroup'> 
    <li><input type=radio name="{{radiogroupname}}" />{{this}}</li> 
</template> 

내 JS :

Template.topics.helpers({ 
    uniqueid: function() { 
    Session.set('topicid',this._id); 
    return this._id; 
    }, 
    choices:function() { 
    return this.choices; 
    }, 
}); 

Template.radiogroup.helpers({ 
    radiogroupname: function() { 
    return(Session.get('topicid')); 
    }, 
}); 

답변

1

이 당신이 루프 내에서 주어진 _id를 나타 내기 위해 반복하여 재사용하는 점에서 Session 변수의 잘 사용하지 않습니다 . 그것은 끊임없이 변화 할 것입니다. 그냥 부모 개체의 _id을 필요로하기 때문에, 다음과 같이 템플릿에 액세스 할 수 spacebars에서 상대 경로 표기법을 사용할 수 있습니다

<template name='radiogroup'> 
    <li><input type=radio name="{{../_id}}" />{{this}}</li> 
</template> 

그런 다음 당신도 당신의 도우미가 필요하지 않습니다. 이미 choices 도우미가 필요 없어도 choices은 이미 반복 가능하기 때문에 도우미가 필요하지 않습니다.

+0

예 감사합니다. 마이크, –