2015-07-01 2 views
0

Предположим, у меня есть шаблон Meteor, который я хочу использовать внутри других шаблонов Meteor.фильтрующие переменные в шаблоне meteor/blaze

<template name="helpsout"> 
    <p><b>{{text}}</b></p> 
</template> 

Предположим, что я хочу назвать этого помощника из другого шаблона needshelp, который получает массив строк arr как помощник, и я хочу, чтобы вызвать helpsout шаблон для каждого элемента arr но модифицируя его первым сказать, предваряя " это нуждается в помощи: ». Я хотел бы написать что-то вроде этого:

<template name="needshelp"> 
    {{#each arr}} 
     {{> helpsout text="this needs help: {{this}}"}} 
    {{/each}} 
</template> 

Но {{this}} не интерполированное и заканчивается установкой text буквального "this needs help: {{this}}".

Есть ли способ сделать это без копирования содержимого helpsout непосредственно в needshelp? (Вы можете себе представить, что helpsout на самом деле является сложным шаблоном, который используется несколькими другими шаблонами, поэтому мы не хотим копировать его в каждое из мест, в котором оно используется.) Кажется, что подвыражения будут делать это, но AFAIK это не в настоящее время поддерживается в Метеор.

ответ

1

У вас есть два варианта:

префикс является общим

Если это общий шаблон в вашем приложении, что helpsout должен быть вызван каким-то текст тела вместе с некоторым префиксом текстом, я бы изменить контекст helpsout так, что она занимает body и опциональный prefix так:

<template name="needshelp"> 
    {{#each arr}} 
    {{> helpsout prefix="this needs help: " body=this}} 
    {{/each}} 
</template> 
Template.helpsout.helpers({ 
    text: function() { 
    return (this.prefix || '') + this.body; 
    } 
}); 

приставка редко

Если вы предпочитаете держать свой код, как это без каких-либо изменений в helpsout, то вы можете использовать дополнительный помощник в вашем needshelp шаблоне, чтобы установить контекст:

<template name="needshelp"> 
    {{#each arr}} 
    {{> helpsout text=helpText}} 
    {{/each}} 
</template> 
Template.needshelp.helpers({ 
    helpText: function() { 
    return "this needs help: " + this; 
    } 
}); 
+0

Спасибо, Дэвид. Поэтому, если я правильно понимаю, невозможно сделать что-то вроде «префикса необычного» метода, но оставить весь текст (т. Е. Префикс) в файле шаблона? Я надеялся не прикладывать префикс к помощникам ради разделения проблем. – DX2003

+0

К сожалению нет - вы не можете выполнять строчную интерполяцию или другой произвольный код js при настройке контекста. –

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