传递数量不确定的可能嵌套的对象属性

Pass an undetermined number of object properties that may be nested

本文关键字:嵌套 对象 属性 不确定      更新时间:2023-09-26

我正在尝试编写一个手把助手,在那里我可以传递一个需要解析的JSON字符串,然后获取任何特定的属性,而不知道可能有多少级别的嵌套,例如:

Handlebars.registerHelper 'parseJSON', (string, properties) ->
    json = JSON.parse string
    # how can I do: return json[oneProperty][andANestedProperty]

然后使用"responseBody"作为我的JSON字符串,不确定如何传入,但我的想法是:

{{parseJSON responseBody [oneProperty][andANestedProperty] }}

如果你想说这样的话:

{{parseJSON json 'p1' 'p2'}}
{{parseJSON json 'p1' 'p2' 'p3'}}

在你的模板中,你只需要让你的助手接受任意数量的参数。唯一棘手的是Handlebars properties参数总是最后一个。使用CoffeeScript splat:实际上非常容易

Handlebars.registerHelper 'parseJSON', (json, path..., properties) ->
    # path will be an array in here

这将在助手内部的path数组中提供类似['p1', 'p2']['p1', 'p2', 'p3']的内容。