3

假设您有某种局部变量,它使用全局变量:

<a href="/" class="logo"><img src="{{assets}}/logo.png"></a>

将部分包含特定数据{{parseJSON}}或外部 JSON 数据后:

{{#parseJSON '{"demo": true}'}}
{{>navigation}}
{{/parseJSON}}

所有全局变量,如{{assets}}“杀死”或至少被覆盖。还有机会访问吗?

提前致谢!

4

2 回答 2

4

这是 Handlebar 部分的一个已知“问题”,因为部分内的上下文仅包括传入的上下文而没有父上下文等。您可以在此处阅读有关该问题的更多信息。

幸运的是,Assemble 团队提供了一个{{partial}}帮助程序,允许访问更“预期”的上下文,包括全局属性。安装此帮助程序后,您使用它的方式与普通部分略有不同:

{{#parseJSON '{"demo": true}'}}
  {{partial "navigation"}}
{{/parseJSON}}

请注意,partial使用要包含为字符串的部分名称调用帮助程序。

话虽如此,新版本的 Handlebars 刚刚发布(v2.0.0-alpha.1),它可能会为本机提供支持。查看我在上面链接的问题线程的最新帖子。

希望这可以帮助。

于 2014-02-10T13:08:00.463 回答
-1

作为一种解决方法,解决此问题的另一种方法是将父上下文显式传递给部分:

{{#..}}
  {{>partial}}
{{/..}}

是的。

于 2014-12-15T16:24:55.900 回答