gpt4 book ai didi

javascript - knockout 绑定(bind)到单选框

转载 作者:行者123 更新时间:2023-11-28 01:03:06 26 4
gpt4 key购买 nike

我有单选框。为此,我绑定(bind)了 click 事件。问题:万一这个单选框应该从一开始就被选中 - 它不是。

所以我想添加 checked 事件。但这会中断 click 逻辑,所以它看起来像双击。

在创建 ViewModel 时,如何在不手动调用 click 的情况下将所有事件正确绑定(bind)到 radio ?

<input data-bind="css: { checked: $component.isActiveGroup(value) },
click: $component.setActiveGroup.bind($component, value),
checked: $component.activeGroup"
value={{value}}
type="radio" />

setActiveGroup(groupName: string) {
if (!groupName) {
return;
}
const isActive = this.isActiveGroup(groupName);
this.activeGroup(isActive ? '' : groupName);
}

isActiveGroup(groupName: string) {
return this.activeGroup() === groupName;
}

activeGroup = ko.observable('');

最佳答案

默认情况下,checked 绑定(bind)会完成您需要的一切:

var VM = function() {

this.activeGroup = ko.observable("A");
this.activeGroup.subscribe(console.log.bind(console));

this.isActiveGroup = groupName => {
return this.activeGroup() === groupName;
}


this.groups = ["A", "B", "C"];
}


ko.applyBindings(new VM());
.checked { background: yellow; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<!-- ko foreach: groups -->
<label data-bind="css: { checked: $parent.isActiveGroup($data) }">
<span data-bind="text: $data"></span>
<input type="radio" data-bind="value: $data,
checked: $parent.activeGroup" />
</label>
<!-- /ko -->

如果您正在寻找“切换”功能,您应该创建 type="checkbox" 输入或创建一个附加选项 none。单选框意味着每组有 1 个选择。

附言要设置选中输入的样式,您还可以使用 :checked css 选择器。在我的示例中,我选择设置周围 label 的样式。

关于javascript - knockout 绑定(bind)到单选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41221471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com