所以我試圖推動存儲在數組中的對象,當一個複選框被敲除到一個可觀察數組。從一個數組中將對象push到observableArray
HTML:
<input type="checkbox" data-bind="checked: checked, click: $root.saveSelected"/>
JS:
var definition = [
{title: 'some text', checked: ko.observable(false), definition: '<p>Some HTML</p>'}
],
var viewModel = {
selectedItems: ko.observableArray([]),
saveSelected: function() {
for (var i = 0; i < definition.length; ++i) {
if (viewModel.definition[i].checked().value === true) {
viewModel.selectedItems.push(definition[i]);
}
}
}
所以我敢肯定,我的if語句是什麼在這裏造成問題,但我不知道我做錯了什麼。但結果應該是,對於每個選中的複選框,該對象(現在對於'checked'的值爲true)應該被推送到selectedItems數組,因此(對於此示例)空白的selectedItems數組應該具有對象
{title: 'some text', checked: ko.observable(false), definition: '<p>Some HTML</p>'}
它在saveSelection函數運行後。
- 編輯 - 此代碼的小提琴:http://jsfiddle.net/imagitron/mMc6k/6/
您的'checked'觀察值內沒有'value'屬性,所以您只需要編寫if(viewModel.definition [i] .checked()=== true)' – nemesv