Ответ 1
Связывание checked
работает по-разному для переключателей и флажков:
Из documentation:
Для переключателей KO устанавливает элемент, который будет проверяться , если и только если значение параметра равно значению переключателя node s
value
. Итак, ваше значение параметра должно быть строкой.
Итак, вам нужно установить атрибут value
ваших входов на "A" и "B", а затем привязать к radioSelectedOptionValue
, который будет содержать "A" или "B", в зависимости от того, какие параметры выбраны:
<label>
<input name="Test" type="radio" value="A"
data-bind="checked: radioSelectedOptionValue" />
Alpha
</label>
<label>
<input name="Test" type="radio" value="B"
data-bind="checked: radioSelectedOptionValue" />
Beta
</label>
Если вы хотите сохранить свои логические свойства: A
и B
, вам нужно сделать их ko.computed
(только для чтения, перезаписываемый), который будет использовать/преобразовать значение radioSelectedOptionValue
:
this.radioSelectedOptionValue = ko.observable();
this.A = ko.computed( {
read: function() {
return this.radioSelectedOptionValue() == "A";
},
write: function(value) {
if (value)
this.radioSelectedOptionValue("A");
}
}, this);
Демо JSFiddle.