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

时间:2015-03-25 17:03:07

标签: javascript coffeescript handlebars.js handlebarshelper

我试图编写一个把手助手,我可以传递一个需要解析的JSON字符串,然后抓住任何特定的属性,不知道有多少级别的嵌套,例如:

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

然后使用' responseBody'作为我的JSON字符串,不知道如何传递它,但想法是我有类似的东西:

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

1 个答案:

答案 0 :(得分:0)

如果您希望能够说出以下内容:

{{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

这会在帮助器内的['p1', 'p2']数组中为您提供['p1', 'p2', 'p3']path等内容。