3

假设我有一个这样的车把模板:

      <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 这样的项目,但实际的问题是:我可以在上下文对象中使用带有点的字符串键吗?如果可以,我如何从车把模板访问它们?

4

2 回答 2

1

老问题,但我仍然想发布我发现的内容。

如果键:值对的键表示为字符串,则可以将字符串本身放在车把模板占位符中。

因此,如果您的上下文是:

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>

将输出:

名字:约翰

这尊重您的关键字符串中的空格和其他字符,我们对其进行了测试,并且它也适用于您的字符串中的点。试一试,让我知道。

于 2015-10-16T15:35:39.747 回答
0

不,您不能使用带有点的键。这是因为它们是语法的一部分。如果您可以使用点,那么您将如何访问该元素的子元素?使用下划线或破折号代替点。这是人们尊重的标准,因为它不会引入错误和其他奇怪的行为。

于 2013-07-31T11:59:31.463 回答