切片到胡子未分类列表的结构

时间:2015-03-26 15:38:27

标签: templates go mustache

我有一个结构。

type DataKey struct {
    Id        int64     `db:"id"`
    UserId    string    `db:"user_id"`
    Data      string    `db:"data"`
    CreatedAt time.Time `db:"created_at"`
}

我创建了一个结构片段。

data := []DataKey{}

在执行sql查询并填充切片后,我尝试传递给mustache来构建我的列表。

mustache.RenderFileInLayout("templates/datakeys.html.mustache", "templates/layout.html.mustache", user, data)))

datakeys.html.mustache

<table class="table table-striped">
<thead>
    <tr>
        <th>#</th>
        <th>UserID</th>
        <th>DataKey</th>
        <th>CreatedAt</th>
    </tr>
</thead>
{{#DataKey}}
    <tr>
        <td>{{Id}}</td>
        <td>{{UserId}}</td>
        <td>{{Data}}</td>
        <td>{{CreatedAt}}</td>
    </tr>
{{/DataKey}}
</table>

我唯一得到的是表头。此函数不会返回错误,因此我不知道为什么它不喜欢这些数据。我也尝试将其作为参考传递。

1 个答案:

答案 0 :(得分:1)

我不熟悉小胡子,但从看到它我认为{{#DataKey}}是错误的。

来自文档:

模板:

{{#repo}}
  <b>{{name}}</b>
{{/repo}}

哈希:

{
  "repo": [
    { "name": "resque" },
    { "name": "hub" },
    { "name": "rip" }
  ]
}

输出:

<b>resque</b>
<b>hub</b>
<b>rip</b>

我建议尝试以下

viewModel := struct{
    items []DataKey{}
}{
    data
}

mustache.RenderFileInLayout("templates/datakeys.html.mustache", "templates/layout.html.mustache", user, viewModel )))

然后用

替换模板
{{#items}}
    <tr>
        <td>{{Id}}</td>
        <td>{{UserId}}</td>
        <td>{{Data}}</td>
        <td>{{CreatedAt}}</td>
    </tr>
{{/items}}

这是未经测试的,可能不正确,但可能值得尝试。我的猜测是DataKey不是模型的属性,因此无法评估。

编辑以获得更清晰:理论上

viewModel := struct{
    items []DataKey{}
}{
    data
}

将成为

{
    "items": [
        {...},{...} ... etc
    ]
}