사용자 (jQuery 이벤트 사용)가 이전 선택 사항을 선택 취소 할 수있는 라디오 그룹이 있습니다. KnockoutJS를 추가하여 변경 사항을 추적하려고하지만 뷰 모드는 UI와 동기화되지 않습니다. 아무도 내가 동기화 할 수있는 방법을 제안 할 수 있습니까?보기 모델을 동기화 상태로 유지하면서 라디오 버튼 선택 취소
내보기 코드 : JS 대응
<div id='test'>
<input data-bind="checked: asd" name='asd' type='radio' value="a"/>
<input data-bind="checked: asd" name='asd' type='radio' value="b"/>
<input data-bind="checked: asd" name='asd' type='radio' value="c"/>
</div>
<div>
<p>Linked Value: <span data-bind="text: asd"></p>
</div>
:
$('#test input[type="radio"]').click(function (event) {
var checked = $(this).hasClass('checked');
if (checked) {
$(this).removeAttr('checked');
$(this).removeClass('checked');
}
else {
$(this).addClass('checked');
}
});
var viewModel = {
asd: ko.observable("a")
};
ko.applyBindings(viewModel);
예는 this fiddle 온라인 여기에서 볼 수 있습니다.
@ RP 해당 치료는 작동합니다. 노크 미 아웃) 이안 –
@RP 좋았어, 사이드 노트로, 데이터 바인딩 = "클릭 : ..."방법을 통해이 작업을 얻으려고 시도하는 것은 총 PITA이고, 나는 그렇게 할 수 없었다. –
@Allen 내 생각에 랩핑 된 사용자 정의 바인딩을 수행하고 동일한 이벤트가 발생하면이를 클릭 할 때 null을 처리하는 다른 이벤트 처리기가 추가됩니다. 뭔가 : http://jsfiddle.net/rniemeyer/TMZsJ/. 관찰 할 수없는 것에 대한 바인딩을 처리하는 데 좀 더 많은 작업이 필요하고 jQuery 종속성을 쉽게 제거 할 수 있습니다. –