2016-10-02 72 views
0

我有一个属性响应的模型,包含有各种键和嵌套级别emberjs集深深嵌套未定义键

一个JSON

我可以输入字段绑定到一个水平缺少键,但不多

例如,如果加载模型

model.response = { key1: { c1: 12} } 

自然后,我可以做

{{ input value = model.reponse.key1.c1}} 

,看到12在输入字段

,但是,我可以做

{{ input value = model.reponse.key1.miss1}} 

当我保存的模型,该模型将被记录,并在页面重载

找到,但我不能这样做

{{ input value = model.reponse.misskey1.miss2}} 

有两个级别的缺失。

不仅没有保存的价值,也与该模型相关的关键 “reponse.misskey1.miss2”一个计算的属性是绝不会在输入变化

我是否需要将所有丢失的钥匙或有没有其他办法可以使它工作?

在这种情况下,我应该使用unknwonProperty处理程序吗?

感谢

回答

1

我们在项目中的一个使用setUnknownProperty(或unknownProperty)。我们没有使它递归,它只提供了一个未知属性的级别。 (这是足以让我们)。所以开发者可以快速生成CRUD屏幕为这样:

{{our-input-component "item.x" label=(t "intl.item.x")}} 
{{our-input-component "item.y" label=(t "intl.item.y")}} 

我们尝试这样做,它已经没有任何问题已经工作了八个月。

但是,这是双向绑定。您应该避免使用双向绑定。这会导致您的应用违反Data Down Action Up原则。

Ember输入助手的常用用法与您的一样。 (value = model.reponse.misskey1.miss2)您应该使用单向绑定进行值分配,并且应该处理更改/输入事件,以便在这些事件/操作处理程序中进行属性分配。或者使用其他组件系列,例如ember-one-way-controls

0

我已经准备好(用这个)回拨模式 的和它的作品

if (this.get('response.misskey1') === undefined){ 
     this.set('response.misskey1', {}) 
     }