1

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

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

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

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

我的问题是:是否有任何简单的 Ember 方法可以自动将整个 JSON 响应“深度包装”为Ember.Object要使用的结构getset整个响应?什么是简单的 Ember 方式来做到这一点?


更新:

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

看起来可行吗?

4

1 回答 1

0

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

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

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

请参阅上面示例的修改后的 jsfiddle:http: //jsfiddle.net/ZZFkA/

希望能帮助到你。

于 2013-10-07T22:17:46.607 回答