2016-10-02 116 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', {}) 
     }