Цикл по массиву объектов в шаблоне (Go) - PullRequest
7 голосов
/ 29 мая 2011

Я передаю структуру (один элемент - массив объектов Category) в шаблон для рендеринга. В шаблоне у меня есть код, который выглядит примерно так:

{.repeated section Categories}
    <p>{@}</p>
{.end}

Тем не менее, каждая категория имеет несколько своих собственных элементов, к которым мне нужно иметь доступ (например, название). Я пробовал что-то вроде {@ .Title}, но не могу найти правильный синтаксис для этого. Как получить доступ к членам данных в массиве во время цикла в шаблоне?

1 Ответ

7 голосов
/ 30 мая 2011

Вы можете просто написать {Title}.

Всякий раз, когда пакет шаблона встречает идентификатор, он пытается найти его в текущем объекте и, если он ничего не находит, он пытается родителя (докорень).@ просто есть, если вы не хотите получать доступ к текущему объекту в целом, а не к одному из его атрибутов.

Поскольку я также не привык к пакету шаблонов, я создалмаленький пример:

type Category struct {
    Title string
    Count int
}

func main() {
    tmpl, _ := template.Parse(`
        {.repeated section Categories}
            <p>{Title} ({Count})</p>
        {.end}
    `, nil)
    categories := []Category{
        Category{"Foo", 3},
        Category{"Bar", 5},
    }
    tmpl.Execute(os.Stdout, map[string]interface{} {
        "Categories": categories,
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...