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 部分です (私は他の誰かの作業を構築していて、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);
    }
);

ajax からロードされたオブジェクトは次のようになります。

{"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}
]}
4

1 に答える 1

0

checkedバインディングvalueは、入力要素のオフで機能します。コードでは、値をオブジェクトに等しく設定している[object Object]ため、両方の入力が同じ値になります。これが、1 つをチェックすると両方が切り替わる理由です。

したがって、プロパティのようなオブジェクトのキーと同じ値を設定する必要がありますCODE。必要に応じて、計算されたオブザーバブルを使用して実際のオブジェクトを表すことができます。

ここにサンプルがあります:http://jsfiddle.net/rniemeyer/7n9gR/

于 2012-11-26T16:59:33.027 に答える