gpt4 book ai didi

javascript - Handlebars 动态访问变量

转载 作者:行者123 更新时间:2023-12-03 03:45:05 26 4
gpt4 key购买 nike

假设我有一个包含两个项目的对象:

状态:{
'action-foo-collapsed':1,
'操作栏折叠':1
}

在 Handlebars 中,我正在迭代另一个对象,其中的键与 foobar 相对应。

我想以动态方式访问如上所示的对象,如下所示:

{{#if @root.state['action-' @key '-collapsed']}}

在不使用自定义助手的情况下,这是否可以实现?

最佳答案

您可以使用Lookup用于动态参数解析的内置助手。但是,您的情况有点复杂,因为您想要连接一些字符串来创建 state 键。如果您的 state 对象具有与其他对象相同的键,那就更容易了。这将允许您执行以下操作:

{{#if (lookup @root.state @key)}}

{{/if}}

请注意,上面使用了 Handlebars 的子表达式,它允许我们将 lookup 帮助器的结果传递给 if 帮助器。

不幸的是,Handlebars 没有用于连接字符串的内置助手。如果您的 state 对象的键必须与您的问题中的键相同,那么您将需要创建一个允许您连接的帮助器。这样的助手相当简单,这是我想出的一个:

Handlebars.registerHelper('concat', function () {
return Array.prototype.slice.call(arguments, 0, -1).join('');
});

使用此帮助程序,我们可以访问您的 state 对象的键,如下所示:

{{#if (lookup @root.state (concat 'action-' @key '-collapsed'))}}

{{/if}}

作为引用,我创建了一个示例 fiddle使用上述两种方法来解决这个问题。

关于javascript - Handlebars 动态访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45431624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com