Ember 中是否有支持 Ember.Array/Ember.Enumerable 的键值对象?
我想在 Handlebars 模板中使用 {{#each}}
迭代它们。
我的用例是显示来自服务器的任意 JSON(用户定义字段)(示例如下)。我可以从嵌套数组递归创建 View (使用 each
帮助器),但无法迭代对象。我的计划是找到(或编写)一个对象来包装 JSON 对象并允许它们可枚举。执行此操作的最佳方法是什么?
到目前为止,我的想法是扩展/混合Enumerable/Array/ArrayProxy/ObjectProxy
的组合,将底层键值存储存储为Ember.Array
,以及添加一个 keys
字段来存储对象的键。然后,我可以使用 setUnknownProperty
和 unknownProperty
来设置/获取基础值并保持 keys
同步。这种方法合理吗?
来自服务器的 JSON 格式
这是一个示例(用户记录自己的锻炼数据)。 请注意,这只是一个示例;该格式完全灵活,因此我无法创建 Ember 数据模型来对这些用户定义的字段进行建模。总的来说,数据可以是任意复杂的 JSON(任意程度的哈希、数组、原语嵌套)
{
"bench_press":[
{
"weight":95,
"repetitions":5,
"tags":[
"warmup"
]
},
{
"weight":135,
"repetitions":3,
"tags":[
"warmup"
]
},
{
"weight":155,
"repetitions":3,
"tags":[
"warmup"
]
},
{
"weight":165,
"repetitions":2,
"tags":[
"warmup"
]
},
{
"weight":185,
"repetitions":1,
"tags":[
"warmup"
]
},
{
"weight":195,
"repetitions":1,
"tags":[
"warmup",
"overshoot"
]
},
{
"weight":190,
"repetitions":5,
"tags":[
]
},
{
"weight":190,
"repetitions":5,
"tags":[
]
},
{
"weight":190,
"repetitions":5,
"tags":[
]
},
{
"weight":190,
"repetitions":3,
"tags":[
]
},
{
"weight":190,
"repetitions":2,
"tags":[
"negatives"
]
}
]
}
最佳答案
据我了解 Ember.js 理念,声明性 Handlebars 模板足够保守,可以强调在模板中使用更少逻辑。
在上述情况下,我建议您使用 ContainerView提供 JSON 作为它的上下文。
关于ember.js - Ember.js 中的可枚举对象(键值映射),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14025706/