问题标签 [go-templates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
33487 浏览

templates - Calling a template with several pipeline parameters

In a Go template, sometimes the way to pass the right data to the right template feels awkward to me. Calling a template with a pipeline parameter looks like calling a function with only one parameter.

Let's say I have a site for Gophers about Gophers. It has a home page main template, and a utility template to print a list of Gophers.

http://play.golang.org/p/Jivy_WPh16

Output :

Now I want to add a bit of context in the subtemplate : format the name "Dewey" differently inside the list because it's the name of the currently logged user. But I can't pass the name directly because there is only one possible "dot" argument pipeline! What can I do?

  • Obviously I can copy-paste the subtemplate code into the main template (I don't want to because it drops all the interest of having a subtemplate).
  • Or I can juggle with some kind of global variables with accessors (I don't want to either).
  • Or I can create a new specific struct type for each template parameter list (not great).
0 投票
1 回答
3287 浏览

go - 遍历 Go 文本模板中的地图

我有一个map看起来像这样的值:

我的模板应该是什么样子才能生成以下字符串(注意正确的逗号用法)?

我从这个作为我的模板开始:

但这只是打印出来

即使这确实有效,逗号也是不正确的。然后我尝试使用自定义函数来格式化地图,但我无法让模板调用我的函数。以下似乎都不起作用:

当 MyFunction 被定义为:

我正在使用如下所示的辅助函数执行模板:

谢谢!

0 投票
1 回答
172 浏览

interface - 界面中存在不相关的方法会破坏文本/模板?

游乐场链接:http ://play.golang.org/p/Ebf5AuJlcP

当我渲染一个包含 的模板(通过text/template包){{ .Something.Name }}时,我可以通过Foo不包含任何方法的接口,它工作正常。但是,如果我Bar改为通过界面,我会得到:

为什么界面上存在甚至没有使用的不相关方法会影响模板的呈现?

0 投票
3 回答
1702 浏览

go - Go 模板中的结构变量名称

我正在尝试使用内置的 http/template 库将结构传递给 Go 模板。但是,我发现如果我用第一个字母小写命名结构的变量,它们不会在模板中呈现,但如果我用第一个字母大写命名它们,它们就是。我在这里看到结构可以有大写和小写的首字母。那么,为什么 Go 模板引擎不能同时渲染两者?

例如,请参阅:

提前致谢。

0 投票
5 回答
6455 浏览

go - 使用动态名称调用其他模板

我看不到使用动态名称调用模板(文本或 html)的方法。例子:

这有效:

此错误与“模板调用中的意外“$BlahVar””:


我要解决的总体问题是我需要根据配置文件有条件地渲染模板 - 所以我不知道模板的名称提前。显然,我可以在 FuncMap 中放置一个函数,它只进行单独的模板解析和调用并返回该结果,但想知道是否有更好的方法。

0 投票
3 回答
229 浏览

templates - 多路平等测试失败

所以我在 go 模板中有以下相等性测试

{{if eq .user.Role "Manager" "Admin"}}

这应该根据文档1.2 发行说明工作,但我没有任何运气

为了更清楚 .user.Role "Manager" 可以工作,或者任何只涉及一个参数的相等测试。所以像 {{if eq 1 1}}正确评估的东西,但{{if eq 1 2 1}}没有。

我得到的错误是3: executing ".../index.html" at : wrong number of args for eq: want 2 got 3

0 投票
2 回答
120526 浏览

go - 遍历模板中的地图

我正在尝试显示健身课程列表(瑜伽、普拉提等)。每种课程类型都有几个课程,所以我想将所有瑜伽课程和所有普拉提课程等分组。

我做了这个函数来截取切片并制作它的地图

现在的问题是如何遍历它,根据http://golang.org/pkg/text/template/,您需要以.Key格式访问它,我不知道密钥(除非我也传递了一个切片模板中的键)。如何在我的视图中解压缩此地图。

我目前只有

显示如下内容:

0 投票
2 回答
2030 浏览

go - 如何打印函数的返回值?

这是我的函数定义,它返回一个字符串

"addClassIfActive": func(tab string, ctx *web.Context) string

我正在尝试像这样打印它:

<a href="/home/"{{ printf "%s" addClassIfActive "home" .Context }}>Home</a>

当我尝试打印时,http 响应正在终止。

我究竟做错了什么?

返回一个布尔值,然后使用 if 工作,我仍然很好奇如何打印从函数返回的字符串

0 投票
1 回答
16390 浏览

go - 如何在 golang 模板上打印 JSON?

我在客户端需要一个对象,所以我使用 json.marshal 将其转换为 JSON 并将其打印到模板中。该对象被打印为转义的 JSON 字符串。

我期待它,var arr=["o1","o2"]但它是var arr="[\"o1\",\"o2\"]"

我知道我可以 JSON.parse 在客户端,但这是唯一的方法吗?

这是我在模板中打印它的方式:

{{ marshal .Arr }}

这是我的元帅功能:

0 投票
4 回答
18965 浏览

go - 模板范围中的最后一项

给定模板:

这可以输出:

但是,如果我想输出:

我需要知道上面范围内的最后一个元素。

我可以设置一个变量来保存数组的长度.SomeField,但它始终为 3,并且$i上面的值只会达到 2。根据我所见,您无法在模板中执行算术运算。

是否可以检测模板范围内的最后一个值?干杯。