2012-11-26 46 views
0
我有淘汰賽, 一個問題,當我檢查一箱

所有檢查,他們都被檢查......複選框陣列正在對點擊

這是我有: _Categories_List擁有所有項目, 和 My_categories是空列表,我想有每個ID添加

這是代碼:

<!-- ko foreach: _Categories_List --> 
    <input type="checkbox" data-bind="attr: {value: $data}, checked: $root.My_categories" /> 
    <span data-bind="text: CODE"></span><br /> 
<!-- /ko --> 

,這是代碼的JS部分(我真的不能查NGE此爲代碼是如何在文檔中,因爲我建過別人的工作,並應使用相同的代碼 - 指的是mapping.fromJS):

var Poi = new Object(); 
Poi.My_categories = []; 
var _Poi = ko.mapping.fromJS(Poi); 

var Categories_List = []; 
var _Categories_List = ko.mapping.fromJS(Categories_List); 

$(document).ready 
(
    function() {   
     ko.applyBindings(_Poi); 
     // here there's an ajax function to load the categories returned in i_Input.My_Result, then: 
     ko.mapping.fromJS(i_Input.My_Result, _Categories_List); 
    } 
); 

這是從阿賈克斯加載哪些對象看起來像:

{"My_Result":[ 
    {"CODE":"chalet","DEF_POIS_CATEGORY_ID":2,"DESCRIPTION":"chalet","ENTRY_DATE":"2012-10-10","ENTRY_USER_ID":2,"OWNER_ID":1}, 
    {"CODE":"vila","DEF_POIS_CATEGORY_ID":3,"DESCRIPTION":"villa","ENTRY_DATE":"2012-10-10","ENTRY_USER_ID":2,"OWNER_ID":1} 
]} 

回答

0

checked綁定工作,關閉輸入元素的value的。在你的代碼中,你設置的值等於一個對象,這會變成[object Object],所以你的兩個輸入都具有相同的值,這就是爲什麼選中這兩個輸入。

因此,您希望將您的值設置爲等於對象上的某個鍵,如CODE屬性。如果有必要,那麼您可以使用計算的觀察值來表示實際的對象。

這裏有一個例子:http://jsfiddle.net/rniemeyer/7n9gR/

+0

感謝...這樣的作品,但事情是我希望把所有的數據裏面My_Categories,爲例子,如果我選擇了1個項目,我想my_categories讓所有:「CODE」:「chalet」,「DEF_POIS_CATEGORY_ID」:2,「DESCRIPTION」:「chalet」,「ENTRY_DATE」:「2012-10-10」,「ENTRY_USER_ID」:2,「OWNER_ID」:1 } 有什麼想法? 非常感謝! –

+0

你可能想要添加一個計算來表示實際的對象。就像:http://jsfiddle.net/rniemeyer/vQMRX/ –

+0

謝謝你,似乎正是我所需要的,但我現在得到以下錯誤:「不能寫一個值到ko.computed,除非你指定一個'寫'選項,如果你想讀取當前值,不要傳遞任何參數「。 代碼流是這樣的: - 用Poi爲空來初始化參數 - 用ajax讀取數值並填充Poi –