Ember中是否有一个支持Ember.Array / Ember.Enumerable的键值对象?
我想在我的Handlebars模板中使用{{#each}}
迭代它们。
我的用例是从服务器显示任意JSON(用户定义字段)(下面给出的示例)。我可以从嵌套数组递归创建视图(使用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"
]
}
]
}
答案 0 :(得分:0)
就我的Ember.js哲学而言,声明性Handlebars模板足够保守,可以强调在模板中使用 less 逻辑。
在上述情况下,我建议您使用ContainerView提供JSON作为其上下文。