【问题标题】:Handlebars expand json in variable and evaluateHandlebars 在变量中扩展 json 并评估
【发布时间】:2016-02-10 19:37:19
【问题描述】:

我有一个传递 JSON 对象的车把模板。我可以渲染所有这些,但一些字符串实际上包含模板信息,因此当我渲染它时,我会得到如下内容:

index.handlebars sn-p:

    {{#each json}}
      <td> {{tooltip}}</td>
    {{/each}}

输出(其中 e1 和 f1 是 json 对象的一部分):

废话,废话{{ e1 }} {{ f1 }}废话废话

有没有办法让把手扩展变量并在其上下文中对其进行评估?

我可以将对象发送到辅助函数,并且可以通过解析它以返回一个字符串来破坏我自己的方式,但我无法找到一种方法让把手基本上将其视为部分或将变量扩展为然后评估它。

【问题讨论】:

  • 只是让您知道您有 3 个左括号 {{{
  • 为什么不能使用 {{ tooltip.e1 }} 和 {{ tooltip.f1 }}?
  • 如果要输出所有对象的属性,stackoverflow.com/questions/9058774/…
  • 抱歉,为了清晰起见,我对模板进行了一些编辑,并出现了一些语法错误。我绝对可以使用 tooltip.e1,但实际的模板代码包含在 tooltip 对象中,而不是车把模板中。

标签: javascript json handlebars.js


【解决方案1】:

我认为您尝试做的事情是不可能的,如果是这样,我认为这不是一个好习惯。

虽然我不确定我是否看到了与创建字符串并在模板外连接变量的函数的区别。

例如,在我的 Backbone/Marionette 应用程序中,我会有

  templateHelpers: function() {
    return {
      tooltipString: "Blah, blah " + this.e1 + " " + this.f1 + " blah blah"
    };
  },

如果您真的不想在此模板中使用该代码,另一种方法是将字符串移动到 partial template

// Partial template
<td>Blah, blah {{ e1 }} {{ f1 }}) blah blah<td>

这样称呼它

{{#each json}}
  <td>{{> myPartial tooltip}}</td>
{{/each}}

如果你愿意,你可以在你的对象中有一个可变的部分模板名称,你可以用它来调用正确的部分模板。

{{> (lookup . 'partialTemplateVariable') }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2021-07-19
    相关资源
    最近更新 更多