Javascript 手柄可动态访问变量
假设我有一个包含两项的对象:Javascript 手柄可动态访问变量,javascript,handlebars.js,Javascript,Handlebars.js,假设我有一个包含两项的对象: 状态:{ “操作foo崩溃”:1, “操作栏已折叠”:1 } 在Handlebar中,我正在迭代另一个对象,其中键对应于foo和bar 我希望以动态方式访问如上所示的对象,如下所示: {{{#if@root.state['action-'@key'-collapsed']}} 这是否可以实现,最好不使用自定义帮助程序?您可以使用内置帮助程序进行动态参数解析。但是,您的情况稍微复杂一些,因为您希望连接一些字符串来创建状态键。如果您的状态对象与另一个对象具有相同的键,则
状态:{
“操作foo崩溃”:1,
“操作栏已折叠”:1
}
在Handlebar中,我正在迭代另一个对象,其中键对应于foo
和bar
我希望以动态方式访问如上所示的对象,如下所示:
{{{#if@root.state['action-'@key'-collapsed']}}
这是否可以实现,最好不使用自定义帮助程序?您可以使用内置帮助程序进行动态参数解析。但是,您的情况稍微复杂一些,因为您希望连接一些字符串来创建状态
键。如果您的状态
对象与另一个对象具有相同的键,则会更容易。这将允许您执行以下操作:
{{#if (lookup @root.state @key)}}
{{/if}}
请注意,上面使用了Handlebar的子表达式,它允许我们将查找
帮助程序的结果传递给if
帮助程序
不幸的是,Handlebar没有用于连接字符串的内置帮助程序。如果状态
对象的键必须与问题中的键相同,则需要创建一个允许连接的帮助器。这样的助手相当简单,我想到了一个:
Handlebars.registerHelper('concat', function () {
return Array.prototype.slice.call(arguments, 0, -1).join('');
});
使用此帮助程序,我们可以访问状态
对象的键,如下所示:
{{#if (lookup @root.state (concat 'action-' @key '-collapsed'))}}
{{/if}}
作为参考,我创建了一个使用上述两种方法解决此问题的示例。谢谢。解决方案实际上是使用
查找,并在state对象中使用相同的键。