2012-02-01 7 views
5

チェックボックスのクリックイベントをトリガしようとすると、チェックボックスのデータバインディング値が変更されません。ノックアウトのチェックボックスバインディングがトリガーイベントで機能しない

私はjsfiddleを作成しました。ボタンをクリックすると、値のバインドが変更されると予想されますが、そうではありません。

http://jsfiddle.net/2T9QZ/13/

任意のヘルプ?

答えて

4

jQueryでトリガ(「クリック」)するだけで、「クリック」イベントハンドラがトリガされます。チェックボックスで実際にクリック(チェックされた状態の変更)が起きることはありません。イベントと同じ名前の関数プロパティがある場合(例:form.submit() - しかし、checkbox.click()はありません)。

しかし、あなたはノックアウトを使用していることから、あなたにも行う可能性があります:

var viewModel = { 
    IsSelected: ko.observable(false) // Initially false 
}; 

ko.applyBindings(viewModel); 


$('#buttonInput').click(function(){ 
    viewModel.IsSelected(true); // <------- 
    // Or, in order to toggle: 
    // viewModel.IsSelected(!viewModel.IsSelected()); 
}); 

、かなり最初の場所でのノックアウトを使用してのポイントです。ビューではなくビューモデルで変更を行います。チェックボックスのcheckedプロパティは、データがIsSelectedにバインドされているため、IsSelectedを変更すると、チェックボックスのcheckedプロパティが変更されます。

関連する問題