2013-10-07 75 views
1

我目前正在研究一个Ember项目,我在Routemodel函数中获取复杂的JSON响应。在相应的模板中,我显示响应的属性。对于其中的一些,有一些可用的操作会导致这种模式的变化。Ember对象中的JSON响应对象的深层包装

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

我已经制作了以下的jsfiddle来说明问题:http://jsfiddle.net/KkD6U/

我的理解是,我需要的响应转换成Ember.Object为了手动从其Ember.Observable混入受益。

我的问题是:是否有任何普通的Ember方式自动将整个JSON响应“深层包裹”到Ember.Object的结构中,以便在整个响应中使用getset? Ember的简单方法是什么?


更新:

在此期间,我建了一个简单的功能,简单的JS对象转换为灰烬对象,看到的jsfiddle这里:http://jsfiddle.net/5vEcL/1/

它看起来是可行的?

回答

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/

希望它有助于。

+0

感谢,直观的像素,这也是我所推动的方向。我在回答时可能会编辑我的问题,在问题结尾处看到我的增强型jsFiddle。基本的问题是一个简单的'Ember.Object.create(...)'似乎并不包装嵌套的数组/对象,这就是为什么我特意要求“深度包装”。 – digitalbreed