Mustache中是否有办法仅引用当前范围?
{
"name": "name1",
"list": [
{
"name": "name2",
"value": 200
},
{
"value": 300
}
]
}
输出:
因为它搜索祖先范围 但我需要的是:
有没有办法像这样避免命名空间冲突?
我不想在名称应为空的对象中设置"name": ""
,因为它是动态创建的。
答案 0 :(得分:1)
目前无法在符合规范的Mustache中找到您想要的东西。但这并不意味着它是不可能的:)
有几种方法可以做到:
有a proposed spec extension - 有时称为“锚点符号” - 可以让你写{{ .name }}
...它基本上是隐式迭代器{{ . }}
的组合,它指的是当前部分上下文和点表示法{{ foo.name }}
。请注意,它尚未添加到许多Mustache实现中,因此这可能对您不起作用,具体取决于您的风格。
如果您的Mustache库实现the proposed filters specs中的任何一个,您可以使用它来防止检查父节上下文。这个答案的可行性很大程度上取决于你的语言。在Ruby中,您可以使用实现#method_missing
的代理来完成它。在PHP中,您可以对__isset
和__get
... Here's an example of that in PHP执行相同操作。
但实际上,最简单的答案是始终在子对象中指定name
属性。如果有一个name
并且它是一个空字符串,则甚至不会检查父上下文。