2013-04-03 69 views
1

這應該很簡單。更新KnockoutJS associative observableArray值

我有一個名稱和布爾值的關聯可觀測數組。

this.items = ko.observableArray([ 
    { name: "name1", boolVal: true }, 
    { name: "name2", boolVal: true }, 
]); 

然後一個簡單的函數來改變boolVal。

this.changeValue = function (item) { 
    item.boolVal = false; 
}; 

當我打電話給ChangeValue功能,boolVal確實發生了改變(見的console.log(數據)在我的jsfiddle),但認爲不會更新。屏幕上的值保持「真」。我必須對KnockoutJS的工作方式做出不正確的假設。

JS Fiddle Link

回答

4

爲了給KO更新UI,你需要有可觀察的性質:

this.items = ko.observableArray([ 
    { name: "name1", boolVal: ko.observable(true) }, 
    { name: "name2", boolVal: ko.observable(true) }, 
]); 

並與設置:

this.changeValue = function (item) { 
    item.boolVal(false); 
}; 

ko.observableArray只跟蹤項目的添加和刪除。所以它不會通知用戶界面,如果其中一個項目改變。爲此,您需要在項目上有ko.observable

演示JSFiddle.

+0

沒想到這一點,但它使一個很大的意義。謝謝! – dmathisen 2013-04-03 19:08:05

+0

這個答案沒有回答有關「關聯」數組可觀察的問題。這只是一個標準陣列。 – 2013-08-29 02:01:10

相關問題