我有一個無線組,允許用戶(使用jQuery事件)取消選擇以前的選擇。我正在嘗試添加KnockoutJS來跟蹤更改,但視圖模式與UI不同步。任何人都可以建議我怎樣才能讓兩者同步?取消選擇單選按鈕同時保持視圖模型同步
我的視圖代碼:
<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>
通訊JS:
$('#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這是一種享受 - 非常感謝(以及所有有用的帖子敲我)Ian –
@RP不錯,作爲一個側面說明,試圖通過data-bind =「click:...」方法來實現這個工作是一個總PITA,我無法以這種方式工作。 –
@Allen我的想法是做一個自定義綁定,檢查包裹並添加另一個事件處理程序,以便在點擊時將其歸零。就像:http://jsfiddle.net/rniemeyer/TMZsJ/。需要一些更多的工作來處理與非觀察對象的綁定,並且可以很容易地移除jQuery依賴關係。 –