假设您有某种局部变量,它使用全局变量:
<a href="/" class="logo"><img src="{{assets}}/logo.png"></a>
将部分包含特定数据{{parseJSON}}
或外部 JSON 数据后:
{{#parseJSON '{"demo": true}'}}
{{>navigation}}
{{/parseJSON}}
所有全局变量,如{{assets}}
“杀死”或至少被覆盖。还有机会访问吗?
提前致谢!
假设您有某种局部变量,它使用全局变量:
<a href="/" class="logo"><img src="{{assets}}/logo.png"></a>
将部分包含特定数据{{parseJSON}}
或外部 JSON 数据后:
{{#parseJSON '{"demo": true}'}}
{{>navigation}}
{{/parseJSON}}
所有全局变量,如{{assets}}
“杀死”或至少被覆盖。还有机会访问吗?
提前致谢!
这是 Handlebar 部分的一个已知“问题”,因为部分内的上下文仅包括传入的上下文而没有父上下文等。您可以在此处阅读有关该问题的更多信息。
幸运的是,Assemble 团队提供了一个{{partial}}
帮助程序,允许访问更“预期”的上下文,包括全局属性。安装此帮助程序后,您使用它的方式与普通部分略有不同:
{{#parseJSON '{"demo": true}'}}
{{partial "navigation"}}
{{/parseJSON}}
请注意,partial
使用要包含为字符串的部分名称调用帮助程序。
话虽如此,新版本的 Handlebars 刚刚发布(v2.0.0-alpha.1),它可能会为本机提供支持。查看我在上面链接的问题线程的最新帖子。
希望这可以帮助。
作为一种解决方法,解决此问题的另一种方法是将父上下文显式传递给部分:
{{#..}}
{{>partial}}
{{/..}}
是的。