2016-02-17 3 views
1

Есть ли способ передать переменную, которая была переименована в шаблон Golang/Revel?Шаблон двигателя шаблона Golang/Revel с переменной

К примеру, в «header.html», у меня есть

{{range .templates}} 
    {{template "something" .}} 
{{end}} 

Как я могу использовать текущий индекс из массива в качестве аргумента шаблона? Я попытался вставить еще один {{.}}, Как показано в примерах Revel, но это приводит к ошибке с шаблоном. Будет ли переменная быть чем-то вроде $ i?

Например, перебирая в Ревеле делается вот так

{{range .messages}} 
    <p>{{.}}</p> 
{{end}} 

Однако, я прочитал, что. означает ноль .... как это работает в Ревеле?

+0

Я думаю, что все части [здесь] (http://stackoverflow.com/questions/16141467/how-to-use-index-inside-range-in -html-template-to-iterate-through-parallel-array), но у меня нет возможности проверить их достаточно, чтобы быть уверенным в ответе. По существу: итерация по диапазону с помощью len (.templates) и использование индексации для получения значений –

+0

Есть ли более идиоматический способ сделать это? Я обновил hte вопрос с деталями – dreadiscool

ответ

2

Если я правильно понимаю ваш вопрос, вы можете использовать range встроены, чтобы получить индекс, а затем передать его в шаблон, как это:

{{range $i, $t := .templates}} 
    {{template "Template.html" $i}} 
{{end}} 

Так что, если переменная templates была определена, как это :

templates := []string{"One", "Two"} 

и Template.html содержит:

This is from Template.html: {{ . }}<br> 

Тогда конечный результат будет:

This is from Template.html: 0<br> 
This is from Template.html: 1<br> 
+0

Закрыть, но я хочу указать имя шаблона на основе элементов массива, а не аргументов, переданных статическому имени шаблона. Я пробовал использовать диапазон и просто делал {{template $ t.}}, Но мне кажется, что это не так – dreadiscool

+0

О, ладно, я вижу. Ну, для шаблонов Go требуется статический параметр для первого аргумента 'template'. Так что переменные не будут делать, не без хакеров :) Но здесь есть поток, который может вам помочь, если вы его настроили: https://github.com/revel/revel/issues/988 –

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