{{^ foreach}}无法在Ghost(0.9.0)主题中工作

时间:2016-08-17 23:18:38

标签: handlebars.js ghost

我正在处理Ghost主题,并且无法让foreach助手与else一起尊重#get条件(或否定)。

重现步骤

1)在Ghost的“设置>实验室>启用测试版功能”中启用“公共API” 2)将以下代码添加到任何.hbs页面

{{!-- Obviously, this tag should not exist --}}
{{#get filter="tags:does-not-exist"}}

  {{#foreach posts}}
    foo
  {{else}}
    fails to show up
  {{/foreach}}

  {{^foreach posts}}
    fails to show up
  {{/foreach}}

  {{!-- Problem persists using #posts shorthand --}}
  {{#posts}}
    foo
  {{else}}
    fails to show up
  {{/posts}}

  {{^posts}}
    fails to show up
  {{/posts}}

{{/get}}

3)在浏览器中检查该页面

预期结果:“无法显示”出现4次(每次参考一次)。 观察到的结果:“无法显示”永远不会出现

注释

当标签 存在时,

#get按预期工作。在上面的代码块中,您会看到foo每个帖子都会显示两次。

{{#foreach}}...{{else}}...{{/foreach}}帮助程序之外使用时,

#getthe documentation运行。我复制他们的例子没有任何困难:

{{#foreach tags}}
  <a href="{{url}}">{{name}}</a>
{{else}}
  <p>There were no tags...</p>
{{/foreach}}

技术细节:

  • Ghost 0.9.0和0.8.0
  • Node v4.4.7
  • Chrome v52
  • 源码

请参阅Ghost Issue #7242

1 个答案:

答案 0 :(得分:1)

我打开了github issue,并在那里收到了解决方案。您 应将{{each}}直接放在{{#get}}上:

{{1}}