假设我有一个像这样的把手模板:
<script id="entry-template" type="text/x-handlebars-template">
<div class="entry">
<h1>{{i18n.title}}</h1>
</div>
</script>
我真正想做的是这样的事情:
var source = $("#entry-template").html();
var template = Handlebars.compile(source);
var context = {"title.t":"My New Post"}
console.log(template(context));
当我尝试使用字符串作为键在上面的上下文中解析时,hanslebars就像密钥不可用一样。我明白,结构应该是这样的:
var context = {
i18n:{
title:'test'
}
}
但是因为我将从外部源获取我的118n字符串,所以将它们用作键是更容易的。 啊,是的,我知道像i18n.js这样的项目,但实际的问题是:我可以在上下文对象中使用带有点的字符串键吗?如果是,我怎样才能从把手模板中访问它们?
答案 0 :(得分:1)
老问题,但我仍想发布我发现的内容。
如果key:value对的键表示为字符串,则可以将字符串本身放在把手模板占位符中。
所以如果你的背景是:
var context = {
"key":"value"
}
与此相反:
var context = {
key: "value"
}
您可以在模板中执行此操作以显示值:
<p>{{"key"}}</p>
因此,把手会将其视为属性名称,并显示值。
示例:
var names = {
"first": "John",
"last": "Doe"
}
<script id="names-template" type="text/x-handlebars-template">
<p>First Name: {{"first"}}</p>
</script>
将输出:
名字:约翰
这尊重键字符串中的空格和其他字符,我们对其进行了测试,它也适用于字符串中的点。试一试,让我知道。
答案 1 :(得分:0)
不,你不能使用带点的键。这是因为它们是语法的一部分。如果你可以使用点,那么你将如何访问该元素的子元素?而不是点,使用下划线或短划线。它是一个标准的人尊重,因为它不会引入错误和其他奇怪的行为。