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

时间:2013-10-07 20:26:32

标签: javascript json ember.js

我目前正在开发一个Ember项目,我在Route的{​​{1}}函数中获取复杂的JSON响应。在相应的模板中,我显示响应的属性。对于其中一些,有一些可用的行为会导致此模型发生变化。

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

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

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

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


更新

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

看起来可行吗?

1 个答案:

答案 0 :(得分:0)

  

我的理解是我需要手动将响应转换为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/

希望它有所帮助。