这是我的代码:
<!-- prepare the breadcrumbs --><ul data-bind="foreach: viewmodel.breadcrumbs"> <!-- ko if: ($index() + 1) < len(viewmodel.breadcrumbs()) --> <li> <a data-bind="attr: { href: href }"> <i ></i> <span data-bind="text: Title"></span> </a> </li> <!-- /ko --> <!-- ko if: ($index() + 1) == len(viewmodel.breadcrumbs()) --> <li data-bind="text: Title"></li> <!-- /ko --></ul>
这是呈现的页面源:
由于这个问题,我使用无容器控制流语法编写的许多KnockoutJs代码都很疯狂,它根本不起作用.
我该怎么做才能解决这个问题?提前致谢
解决方法html/template
包中有一种特殊类型: template.HTML
.呈现模板时,模板中此类型的值不会被转义. 因此,您可以将HTML注释“标记”为template.HTML,因此在执行模板期间不会对其进行转义或省略.
一种方法是为模板注册一个自定义函数,这个函数可以从模板调用,它接受一个字符串参数并将其作为template.HTML返回.您可以将所有HTML注释“传递”到此函数,因此,HTML注释将保留在输出中.
看这个例子:
func main() { t := template.Must(template.New("").Funcs(template.FuncMap{ "safe": func(s string) template.HTML { return template.HTML(s) },}).Parse(src)) t.Execute(os.Stdout,nil)}const src = `<HTML><body>{{safe "<!-- This is a comment -->"}}<div>Some <b>HTML</b> content</div></body></HTML>`
输出(在Go Playground上试试):
<HTML><body><!-- This is a comment --><div>Some <b>HTML</b> content</div></body></HTML>
所以基本上在注册我们的safe()函数之后,将所有HTML注释转换为调用此safe()函数并传递原始HTML注释的模板 *** 作.
转换这个:
<!-- Some HTML comment -->
对此:
{{safe "<!-- Some HTML comment -->"}}
或者(无论你喜欢):
{{"<!-- Some HTML comment -->" | safe}}
你很高兴去.
注意:如果您的HTML注释包含引号(‘“’),您可以/必须像这样转义它:
{{safe "<!-- Some \"HTML\" comment -->"}}
注意#2:请注意,您不应该使用条件HTML注释,因为这可能会破坏HTML / template包的上下文敏感转义.详情请参阅this.
总结以上是内存溢出为你收集整理的Go – 不呈现HTML注释全部内容,希望文章能够帮你解决Go – 不呈现HTML注释所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)