【问题标题】:Deep-wrapping of JSON response objects in Ember Objects在 Ember 对象中深度包装 JSON 响应对象
【发布时间】:2013-10-07 20:26:32
【问题描述】:

我目前正在从事一个 Ember 项目,在该项目中,我在 Routemodel 函数中获取复杂的 JSON 响应。在相应的模板中,我显示了响应的属性。对于其中一些,有一些可用的操作会导致此模型发生变化。

我希望使用 Ember 的绑定将这些更改直接反映在 UI 中。不幸的是,虽然使用this.get('attributeFromJson') 访问ObjectController 中的顶级响应属性效果很好,但在其中一个子属性上尝试相同(或set)不起作用。

我制作了以下 JSFiddle 来演示该问题:http://jsfiddle.net/KkD6U/

我的理解是,我需要手动将响应转换为Ember.Object,以便从其Ember.Observable mixin 中受益。

我的问题是:是否有任何简单的 Ember 方法可以自动将整个 JSON 响应“深度包装”到 Ember.Object 的结构中,以便在整个响应中使用 getset?执行此操作的简单 Ember 方法是什么?


更新:

同时,我构建了一个简单的函数来将普通的 JS 对象转换为 Ember 对象,请参见此处的 jsFiddle:http://jsfiddle.net/5vEcL/1/

看起来可行吗?

【问题讨论】:

    标签: javascript json ember.js


    【解决方案1】:

    我的理解是,我需要手动将响应转换为 Ember.Object 才能从其 Ember.Observable mixin 中受益。

    基本上是的,如果您将子对象包装在 Ember.Object.create(...) 中,它将与 ember 的绑定机制一起使用:

    ...
    anArray: [
      Ember.Object.create({
        id: '1',
        anotherAttribute: '123'
      }),
      Ember.Object.create({
        id: '2',
        anotherAttribute: '456'
      })
    ]
    ...
    

    在此处查看您修改的上述示例的 jsfiddle:http://jsfiddle.net/ZZFkA/

    希望对你有帮助。

    【讨论】:

    • 谢谢,intuitivepixel,这也是我努力的方向。我可能在您回答时编辑了我的问题,请在问题末尾查看我增强的 jsFiddle。基本问题是一个简单的Ember.Object.create(...) 似乎没有包装嵌套的数组/对象,这就是为什么我特别要求“深度包装”。
    猜你喜欢
    • 2017-07-04
    • 2017-06-12
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2016-03-22
    • 2018-03-21
    相关资源
    最近更新 更多