如何计算在HTML /模板的东西(How to calculate something in htm

2019-11-05 06:26发布

你怎么能计算走的HTML模板里面的东西?

例如:

{{ $length := len . }}
<p>The last index of this map is: {{ $length -1 }} </p>

是的. 是地图。
该代码{{ $length -1 }}不工作,是有办法做到这一点?

Answer 1:

你不能。 模板是不是一种脚本语言。 在设计理念,复杂的逻辑应该是外面的模板。

要么通过所计算出的结果作为参数(优选/最容易的),或寄存器中可以模板执行期间调用,将值传递给它们,可以执行计算和返回任何值的自定义功能(例如返回param - 1 )。

用于注册和使用自定义功能的实例,参见:

Golang模板(并传递到funcs中模板)

如何通过变量访问对象字段模板?

迭代转到地图获取指标 。



Answer 2:

您可以使用像FuncMap 这样 。 一旦你funcmap中定义的函数,你可以在HTML中使用它。 你的情况,你可以定义计算定地图的长度,并返回给你一个MapLength功能或类似的东西。 然后,您可以调用它的模板有点像这样:

<p>The last index of this map is: {{ .MapLength . }} </p>


Answer 3:

其他的答案是正确的,你不能做到这一点在模板本身。 但是,这里有一个如何使用工作示例Funcs

package main

import (
    "fmt"
    "html/template"
    "os"
)

type MyMap map[string]string

func LastMapIndex(args ...interface{}) string {
    if m, ok := args[0].(MyMap); ok && len(args) == 1 {
        return fmt.Sprintf("%d", len(m) - 1)
    }
    return ""

}

func main() {
    myMap := MyMap{}
    myMap["foo"] = "bar"

    t := template.New("template test")
    t = t.Funcs(template.FuncMap{"LastMapIndex": LastMapIndex})
    t = template.Must(t.Parse("Last map index: {{.|LastMapIndex}}\n"))
    t.Execute(os.Stdout, myMap)
}

游乐场: https://play.golang.org/p/YNchaHc5Spz



文章来源: How to calculate something in html/template