2012-05-16 98 views
4

我有我的視圖模型中的字符串列表。要編輯它們,我希望每個文件都顯示爲帶有文本框的<li><button>以刪除該項目。因此,對於清單['A', 'B'],我想是這樣的:敲除綁定不會使用簡單的可觀察數組更新

<ul data-bind="foreach: titles"> 
    <li> 
     <input value="A" data-bind="value:$data" /> 
     <button data-bind="click: $root.remove">remove</button> 
    </li> 
    <li> 
     <input value="B" data-bind="value:$data" /> 
     <button data-bind="click: $root.remove">remove</button> 
    </li> 
</ul> 
<button data-bind="click: add">add</button> 

我可以創建初期,但我沒有得到更新的值在視圖模型來反映,並不能得到刪除按鈕工作。

我最初有一個簡單字符串observableArray,然後更新爲observable字符串的observableArray。使用普通字符串,刪除按鈕可以工作,但可以預見,它不會更新視圖模型。

我設置一個JS撥弄問題相當孤立:http://jsfiddle.net/bdukes/uvyH3/2/

如果有這樣的一個既定的或更好的方法,我很想知道。

此外,作爲一個不相關(不重要)問題,stringifyJson效用似乎總是給我空的結果數組中的每個項目。

回答

6

淘汰賽當前不使用純觀測(問題記錄here)的陣列工作。

爲了使這個正常工作,你需要你的項目是持有像觀測對象:

{ val: ko.observable("something") } 

這裏是你的小提琴更新爲使用這些類型的對象:http://jsfiddle.net/rniemeyer/GgFa9/

+0

我會想,如果我必須這樣做,只是感覺不對。感謝修復,並讓我知道這是一個已知的問題。 – bdukes

+0

這只是咬我一口 - 感謝修復! –

+0

看來,提到的問題已在淘汰賽3.0.0中解決 – bdukes