ember.js - Ember.js 中的可枚举对象(键值映射)

标签 ember.js ember-data

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

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

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

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

相关文章:

javascript - 我应该如何在 Ember 组件之间共享数据?

javascript - 过滤器的 Ember.js 路由问题

javascript - Ember JS 嵌套组件冒泡

ember.js - Emberjs rootElement

ember.js - 从 ember 数据 json 中删除模型名称

javascript - 如何从 Ember 应用程序模板中的路由访问数据?

javascript - 刷新 Ember 数据更新 View

javascript - Ember模型生命周期,并恢复到原始状态

javascript - 尝试 JSON.stringify Ember 模型时 ID 丢失

documentation - 为 Ember Data 构建文档