所設置的新鍵:處理在數據綁定
我有一個顯示使用模板表一knockout.js應用「的foreach:$ data.items」。
數據設定與數據綁定像這樣的$:
<div data-bind="template: {name: 'table-custom', data: {table: 'item-list-custom', config: $root.items, default: {foo: '', bar: ''}}}"></div>
的$ root.items是http://stardict.sourceforge.net/Dictionaries.php下載的陣列,像這樣:
[{foo: 'val2', bar: 'val2'}, ...]
我得到的值JSON中的$ root.items,並根據模板創建表。
問題:
我想一個新列添加到表中,所以我增加了一個默認值「默認」字典(例如巴茲:「」)。新列呈現爲選擇(下拉列表)。
一切都可以做到這一點。我的問題是:
1)如何設置所選選項的值如果可用?我試圖
<select data-bind="value: baz, ...
但投訴,因爲現有的行(從JSON)還不包含巴茲關鍵,所以它不能找到它。
2)當我在選擇中選擇一些值時,對於現有的行,它不會與模型的其餘部分一起保存。即他們仍然只包含「foo」和「bar」鍵。
如果我在表中添加一個新行,然後選擇一個值,它就可以正常工作,並將baz值與其他值一起保存。我想這是因爲「默認」baz值爲新行開始,而不是現有的行。
那麼,如何讓我的現有數據(在加載時沒有「baz」屬性,因爲我稍後將其添加到表中)與新行一樣使用此設置?
謝謝。這適用於(1)問題,但不適用於(2)。 – Hejazzman
我不明白,從你的描述(2)它聽起來像屬性沒有被填充,如果它最初未定義在行中。在我的JsFiddle中,列表中的第二項沒有定義myProp,但是這個屬性可以通過select來設置,並且會保存回底層對象,如點擊「show'em」按鈕所示。我不明白還需要什麼? –