在 Ember 对象中深度包装 JSON 响应对象

Deep-wrapping of JSON response objects in Ember Objects

本文关键字:对象 JSON 响应 包装 Ember 深度      更新时间:2023-09-26

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

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

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

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

我的问题是:是否有任何简单的 Ember 方法可以自动将整个 JSON 响应"深度包装"为Ember.Object结构,以便在整个响应上使用getset?简单的余烬方法是什么?


更新:

同时,我构建了一个简单的函数来将普通JS对象转换为Ember对象,请参阅jsFiddle:http://jsfiddle.net/5vEcL/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/

希望对您有所帮助。