{{^foreach}} 不适用于 Ghost (0.9.0) 主题

{{^foreach}} not working in Ghost (0.9.0) Theme

我正在开发 Ghost 主题,但在让 foreach 助手与 #get 一起遵守 else 条件(或否定)时遇到了问题。

重现步骤

1) 在 Ghost 的 "Settings > Labs > Enable Beta Features" 中启用 "Public 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) 在浏览器中查看该页面

预期结果:"fails to show up" 出现 4 次(每个参考一次)。 观测结果:"fails to show up"从未出现

备注

当标签 存在时,

#get 按预期工作。在上面的代码块中,您会看到 foo 每找到一次 post 就会出现两次。

{{#foreach}}...{{else}}...{{/foreach}}#get 助手之外使用时,按照 the documentation 工作。我可以毫不费力地重现他们的例子:

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

技术细节:

Ghost Issue #7242

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

{{#get "posts" filter="tags:xyz"}}
  {{#foreach posts}}
    yeah posts
  {{/foreach}}
{{else}}
  no posts found
{{/get}}