2012-01-31 7 views
6

すべてのコンボボックスのチェックを外し、私はJsonObjectノックアウトチェック/ Iは、ユーザーコントロールにマッピングJSONのobejctのためのノックアウトを使用して

var viewModel = { 
      IsEnabled1 :ko.observable(true),    
      IsEnabled2 :ko.observable(true), 
      IsEnabled3 :ko.observable(false) 
     }; 
    ... 
    ko.applyBindings(viewModel); 

を持っている彼らは

<input type="checkbox" data-bind="checked: IsEnabled1" /> 

ように見える 、単一のチェックボックスのリストを持っていますまた、チェックボックスをオンにして、他のチェックボックスをすべてオフにする場合は、JavaScript側でこの変更を行いましたが、グローバルチェックボックスのUI部分を更新しましたが、別々のチェックボックスからのデータはJSONオブジェクトにマッピングされません。このコードの私のJSONオブジェクトの後

グローバルチェックボックス

$("#GeneralTable thead tr th:first input:checkbox").click(function() { 
      var checkedStatus = this.checked; 
      $("#GeneralTable tbody tr td:first-child input:checkbox").each(function() { 
       this.checked = checkedStatus;      
      }); 

     }); 

はUIに関連しないデータが含まれています。

JS側からすべてのJSON変更チェックボックスを更新するにはどうすればよいですか?

+1

あなたが投稿したコードでは、あなたの質問。 –

+0

今より良いはずです。ありがとう。 –

+1

あなたのコードで、ノードとやりとりすることに問題があります。しかし、データと対話する必要があります。それはMVVMの世界でより良いです:-)私の答えを確認してください。私はそれがあなたのために働くと思います。 – Romanych

答えて

16

例を確認してください:http://jsfiddle.net/MenukaIshan/5gaLjh2c/

私はそれが正確に何が必要だと思うが。すべてのアイテムにはIsCheckedの観測可能なプロパティがあります。 ViewModelには、すべての項目をチェックまたはチェック解除するための計算された観測可能な(読み込み可能および書き込み可能な)オブジェクトが含まれます。

+0

これは完全な使用例です。私の一日を二度作りました! –

+0

同様のコードの作業。私はあなたのフィドルを試しましたが、私の場合、ノックアウト-3.2.0.jsを使用していて、(フィドルでも)ノックアウト-2.0.0.jsで動作していません。どんな手掛かり。 –

+0

3.2.4はこれにもかかわらず動作しません –

2

あり、上記の溶液が空リストのAllCheckedが偽作る-to二つの方法

に改善することができる代替ソリューションはhttp://jsfiddle.net/rniemeyer/kXYuU/

ここで、我々は減らす-to長

をチェックする必要があります番号を再計算して長いリストをすべて選択するときは、スロットルを追加する必要があります

self.AllChecked = ko.computed({ 
    read: function() { 
     var firstUnchecked = ko.utils.arrayFirst(self.Items, function(item) { 
      return item.IsChecked() == false; 
     }); 
     return self.Items.length && !firstUnchecked; 
    }, 
    write: function(value) { 
     ko.utils.arrayForEach(self.Items, function(item) { 
      item.IsChecked(value); 
     }); 
    } 
}).extend({ throttle: 1 }); 
関連する問題