2013-12-11 3 views
0

Meteor.js에서 자동 모양이있는 핸들 바 도우미를 사용하고 있습니다. 내 양식에 선택 드롭 다운 상자를 만들려고하지만 배열 대신 모음에서 오는 옵션을 원합니다. collection2 패키지를 사용하여 "Persons"컬렉션을 정의하고 간단한 스키마로 스키마를 정의했습니다. firstName, lastName, fullName 값을 가진 두 Person을 삽입했습니다. 내가 드롭 다운 상자 내가 그것을 자동으로 표시됩니다 컬렉션에 더 많은 사람을 추가 내 컬렉션 등이 각 사람의 firstName을 표시하기 위해 노력하고핸들 모음 도우미에서 컬렉션을 사용하는 방법

Handlebars.registerHelper("personSelectOption", function(options) { 
peeps = Persons.find().fetch(); 

peeps.forEach(function(persons){ 

    return [ 
    {label:persons.firstName , value:persons.firstName} 
]; 
}); 
}); 

: 여기

내 도우미입니다 드롭 다운 상자.

나는 여기에서 많은 것을 놓치고 있지만, 나는 새로운 코더이며, 내가 얻을 수있는 도움이 크다는 것을 알고있다.

감사합니다.

자동 모양을 사용하여 본 유일한 예는이 도우미를 사용하기 때문에 핸들 바 도우미를 사용하려고했습니다. autoforms의 드롭 다운 상자는이를 사용

<div class="form-group {{afHasError 'firstOptionSelect'}}"> 
     {{afFieldLabel 'firstOptionSelect'}} 
     {{afFieldInput 'firstOptionSelect' firstOption="(Select Something)" options=personSelectOption}} 
     {{#if afFieldIsInvalid 'firstOptionSelect'}} 
     <span class="help-block">{{afFieldMessage 'firstOptionSelect'}}</span> 
     {{/if}} 
     </div> 

옵션은 내가 firstName을 표시려고 한 곳입니다. 그리고 forEach는 컬렉션의 모든 첫 번째 이름을 가져 왔습니다. meteor 구문을 사용하여 핸들 막대 도우미를 사용하지 않고 자동 폼을 사용하려면 어떻게해야합니까? Cuberto가 말한대로

감사

+0

왜 'Handlebars.registerHelper'를 사용하고 있습니까? 문서를 읽었습니까? 템플릿에 함수를 정의하여 도우미를 추가하십시오. - Template.myTemplate.myHelper = function() {};' – sbking

답변

0

이 나를 위해 일하게 끝난 것입니다 :

핸들 도우미 :

<div class="form-group {{afHasError 'firstOptionSelect'}}"> 
     {{afFieldLabel 'firstOptionSelect'}} 
     {{afFieldInput 'firstOptionSelect' firstOption="(Select Something)" options= personSelect }} 
     {{#if afFieldIsInvalid 'firstOptionSelect'}} 
     <span class="help-block">{{afFieldMessage 'firstOptionSelect'}}</span> 
     {{/if}} 
     </div> 

나는 유성 Template.helper를 사용하고 있지 않다 :

Handlebars.registerHelper("personSelect", function() { 

peeps = Persons.find(); 


people = peeps.map(function(peeps) { 

return {label:peeps.fullName, value:peeps.fullName }; 

}); 
return people; 
}); 

그리고 해당 폼 템플릿

자동 템플릿 템플릿에 표시 할 템플릿이 필요하기 때문입니다. 나는 이것을하기위한 방법을 찾지 못했기 때문에 대신 핸들 바를 사용하기로 결정했습니다. 헬퍼. 그런 식으로하는 법을 아는 분이라면, 나는 모두 귀입니다.

0

는, 유성은 당신에게 유성의 자신의 구문을 사용하여 템플릿에 도우미를 추가 할 수있는 기능을 제공합니다. 또한 당신이 forEach 블록 뭘 하려는지 명확하지 않다하지만,이 같은 작업을해야합니다 :

:

Template.myTemplate.helpers({ 
    personSelectOption: function() { 
    return Persons.find().fetch(); 
    } 
}); 

그런 다음 다음과 같이 사용하여 HTML에서 원하는 정보를 액세스 할 수 있습니다

<template name="myTemplate"> 
    <select> 
    {{#each personSelectOption}} 
     <option value="{{this.firstName}}">{{this.firstName}}</option> 
    {{/each}} 
    </select> 
</template> 

특수 구조를 만들어 도우미에서 반환하지 않고도 템플릿 내에서 필요한 문서 속성에 액세스 할 수 있습니다. 실제로 (예를 들어 어떤 방법으로 속성을 변경해야하기 때문에) 실제로 수행하려는 경우 forEach 대신 map을 사용하여 수정 된 객체의 단일 배열을 반환해야합니다.

관련 문제