2016-11-21 3 views
0


Я пытаюсь создать раскрывающееся меню html, используя метеорит.
Я создаю элемент select, а затем с помощью помощников пытаюсь перечислить имена провинций в раскрывающемся списке. Вот main.htmlСоздание выпадающего меню html с помощью meteor

<template name="signup"> 
    <select> 
     {{#each province}} 
      {{> provinceTemplate}} 
     {{/each}} 
    </select> 
</template> 

<template name="provinceTemplate"> 
    <option>{{provinceName}}</option> 
</template> 

И это main.js

Template.body.helpers({ 
    province:[ 
    {provinceName: 'Tehran'}, 
    {provinceName: 'Isfahan'}, 
    {provinceName: 'Yazd'}, 
    {provinceName: 'Shiraz'}, 
    {provinceName: 'Kerman'}, 
    ], 
}); 

Я просто использовать помощника, чтобы сформировать выпадающий список.
Но когда я запускаю его, внутри тега select ничего нет.

Спасибо, ребята ...

+0

Теперь я понимаю, что это неправильно, то проблема заключается в том, что вы определяете 'province' помощника в' body', но вы используете его в шаблоне 'signup'. Переместите помощника «провинции» в шаблон 'signup' – Khang

ответ

0

Я нашел ответ ... Вы не должны вызывать шаблон ({{> TemplateName}}) в другом шаблоне ... Как только я извлек свой код из первого шаблона, он начал работать. Следующий код является неправильным ...

<body> 
     {{> firstTemplate}} 
    </body> 

    <template name="firstTemplate"> 
     ... 
     {{> secondTemplate}} 
     ... 
    </template> 

    <template name="secondTemplate"> 
     ... 
    </template> 

В то время как следующий код работает ...

<body> 
    ... 
    {{> secondTemplate}} 
    ... 
</body> 
<template name="secondTemplate"> 
    ... 
</template> 
0

Попробуйте этот код:

Template.body.helpers({ 
    province() { 
    return [ 
     {provinceName: 'Tehran'}, 
     {provinceName: 'Isfahan'}, 
     {provinceName: 'Yazd'}, 
     {provinceName: 'Shiraz'}, 
     {provinceName: 'Kerman'}, 
    ]; 
    }, 
}); 
+0

Нет ... Не помогло! @Khang –

+0

Вы видите сообщения об ошибках в консоли браузера? возможно, попробуйте поставить 'console.log' внутри вспомогательной функции' province', чтобы проверить, действительно ли он запущен. – Khang

+0

. Функция существует и содержит объекты (названия областей), но снова выпадающее меню не содержит ни одного из имен и пусто. @khang –

0

вы звоните в <select> внутри <body>? Это должно работать:

main.html

<body> 

<select> 
    {{#each province}} 
    {{> provinceTemplate}} 
    {{/each}} 
</select> 

</body> 

<template name="provinceTemplate"> 
    <option>{{provinceName}}</option> 
</template> 

Main.js

Template.body.helpers({ 
    province:[ 
    {provinceName: 'Tehran'}, 
    {provinceName: 'Isfahan'}, 
    {provinceName: 'Yazd'}, 
    {provinceName: 'Shiraz'}, 
    {provinceName: 'Kerman'}, 
    ]; 
});