Как передать несколько переменных в шаблон HTML Go - PullRequest
0 голосов
/ 28 апреля 2018

Я новичок в Голанге. Я хотел бы передать несколько переменных в HTML. Итак, у меня есть такой тип:

type Variables struct { 
    UserNames    []string  
    Checks       []string
}

pagevarible с переданными правильными значениями

var PageVars Variables
    PageVars = Variables{
        UserNames: ulist,
        Checks: check,
    }
    log.Println("ulist",ulist)
    err = tpl.Execute(w, PageVars) //execute the template and pass it to index page
    if err != nil { // if there is an error
        log.Print("template executing error: ", err) //log it on terminal
    }

И я хочу передать как UserNames, так и Checks в шаблон HTML, что-то вроде:

{{range .UserNames .Checks}}
{{.UserNames}}: <input type="checkbox" name="email" value={{. UserNames}} {{.Checks}}/><br />
{{end}}

Но это не сработало. Кто-нибудь может исправить мой синтаксис? Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Диапазон с индексной переменной, используйте этот индекс для получения чека:

{{range $i, $user := .UserNames}}
{{$check := index $.Checks $i}}
{{$user}}: <input type="checkbox" name="email" value={{$user}} {{$check}}/><br />
{{end}}

Диапазон устанавливает курсор . на последовательные значения среза. Используйте $ для ссылки на поле Checks в аргументе шаблона.

пример детской площадки

0 голосов
/ 29 апреля 2018

Когда вы ссылаетесь на поля с помощью . внутри диапазона, ожидается, что оно будет полем ранжируемого элемента, поэтому в этом случае

{{range .UserNames}}
{{$check := .Checks}}

Он ищет поле Checks для текущего экземпляра в списке имен пользователей. Если проверки отделены от этого (как это показано в ваших PageVars), тогда вы можете использовать ссылку $ на объект верхнего уровня, например,

{{range .UserNames}}
{{$check := $.Checks}} 

Вы не опубликовали код, выполняющий шаблон, но убедитесь, что проверяете ошибку, возвращенную из него.

...