2014-10-02 6 views
3

Мой HTML:Как вернуть шаблон от помощника шаблона Meteor?

<template name="foo"> 
    {{#each category}} 
     {{#if this.custom}} 
       {{> someTemplateName}} 
     {{else}} 
       {{> generic}} 
     {{/if}} 
    {{/each}} 
</template 

Как вернуть некоторое значение `someTemplateName», так что я могу переключать шаблоны, основанные на на объекте в операторе #each.

Template.foo.someTemplateName = function() { 
     return A_TEMPLATE_NAME 
} 

Thanks.

ответ

2

Решение было на самом деле очень просто.

<template name="foo"> 
    {{#each category}} 
     {{#if this.custom}} 
      {{> someTemplateName}} 
     {{else}} 
      {{> generic}} 
     {{/if}} 
    {{/each}} 
</template> 

И я возвращаю помощника:

Template.foo.someTemplateName = function() { 
    return Template[this.name]; 
} 

Где this.name находится из `{{#each}}» контекста.

2

Правильный синтаксис выглядит следующим образом:

JS

Template.foo.helpers({ 
    someTemplate:function() { 
    return Template.someTemplate; 
    } 
}); 

HTML

<template name="someTemplate"> 
    <p>SOME TEMPLATE</p> 
</template> 

Это на самом деле не имя, которое можно манипулировать, но объекты шаблона, которые живут под именем переменной Template.myTemplate ,

Если вы хотите, чтобы манипулировать именами шаблонов, попробуйте UI.dynamic:

HTML

<template name="foo"> 
    {{> UI.dynamic template=someTemplateName}} 
</template> 

JS

Template.foo.helpers({ 
    someTemplateName:function() { 
    return "someTemplate"; 
    } 
}); 
+0

спасибо! Я немного опоздал. Реализация, которую я получил, очень похожа. – Nate

Смежные вопросы