3

Ember 中是否有支持 Ember.Array / Ember.Enumerable 的键值对象?

我想{{#each}}在我的 Handlebars 模板中迭代它们。

我的用例是显示来自服务器的任意 JSON(用户定义字段)(示例如下)。我可以从嵌套数组递归地创建视图(使用each助手),但我不能迭代一个对象。我的计划是找到(或编写)一个可以包装 JSON 对象并允许它们可枚举的对象。这样做的最佳方法是什么?

到目前为止,我的想法是将扩展/混合Enumerable/Array/ArrayProxy/ObjectProxy、将底层键值存储存储为Ember.Array以及添加一个keys字段来存储对象的键的组合。然后我可以使用setUnknownPropertyandunknownProperty设置/获取基础值并保持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"
         ]
      }
   ]
}
4

1 回答 1

0

据我了解 Ember.js 的理念,声明性 Handlebars 模板足够保守,可以强调在模板中使用更少的逻辑。

在上述情况下,我建议您使用ContainerView提供 JSON 作为它的上下文。

于 2013-03-01T21:10:51.300 回答