【问题标题】:How is Handlebars handling of ".." (up level) correct?Handlebars 对“..”(上一级)的处理如何正确?
【发布时间】:2019-05-14 18:50:09
【问题描述】:

以 Handlebars Cookbook 为例材料...

数据:

{
  "foo": {
    "bar": {
      "moo": "No"
    }
  },
  "moo": "Yes!"
}

模板:

{{#foo.bar}}
{{../moo}}
{{/foo.bar}}

预期输出:

Yes!

这对我来说似乎是错误的,我希望有人可以帮助我解决逻辑。

如果 Handlebars 在第一次查找“foo.bar”时向下导航上下文,则块内的上下文应该是 bar,或 {"moo":"No"}。事实上,它似乎是。如果我将 {{moo}} 放在块体中,我会看到“否”作为输出。

因此,“..”上升 1 级到上下文 foo,{"bar":{"moo","No"}} 似乎是合乎逻辑的。 “foo”对象中没有“moo”。获得“是!”的逻辑/预期方式会使用{{../../moo}},但这不是它的工作原理。

这里的逻辑是什么?

【问题讨论】:

    标签: handlebars.js


    【解决方案1】:

    我想我明白了。我假设(错误地)Handlebars 将每个路径组件解析为一个上下文:Context[foo] -> Context[bar]。它似乎不是这样工作的。而是创建Context[foo.bar]。所以“..”确实是根,所以“../moo”是“是的!”。

    不是在编程意义上的路径堆栈,而是似乎是块上下文的堆栈/历史。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      相关资源
      最近更新 更多