Javascript 为什么我的击出单选按钮在另一个元素中使用单击绑定时失败?

Javascript 为什么我的击出单选按钮在另一个元素中使用单击绑定时失败?,javascript,html,knockout.js,Javascript,Html,Knockout.js,我有一个单选按钮列表。我希望单击他们的也可以选中单选按钮。直到我在radio元素上添加了一个name属性,所有这些都起作用了。然后我的代码停止工作 下面是我的代码的样子: <ul data-bind="foreach: rows"> <li data-bind="click: function() { $parent.val($data); }"> <input type="radio" name="my_radio" data-bind="

我有一个单选按钮列表。我希望单击他们的
  • 也可以选中单选按钮。直到我在radio元素上添加了一个
    name
    属性,所有这些都起作用了。然后我的代码停止工作

    下面是我的代码的样子:

    <ul data-bind="foreach: rows">
        <li data-bind="click: function() { $parent.val($data); }">
            <input type="radio" name="my_radio" data-bind="value: $data, checked: $parent.val" />
            <label data-bind="text: $data"></label>
        </li>
    </ul>
    
    这里有两个测试用例

    确保同时单击单选按钮和行

    工作:

    不工作:


    在第二种情况下,当单击收音机时,您将看到val()observable正在更新,但UI没有更新。任何人都知道这里发生了什么,或者可以看到解决方法吗?

    如果名称属性都设置为相同的值,则所有这些单选按钮都是同一组的一部分,并且您一次只能选择其中一个


    阅读有关单选按钮名称属性的详细信息,单击未到达单选按钮,因为knockoutjs从单击处理程序返回false,从而阻止了默认操作的发生(请参阅:)。只需从单击处理程序()返回true:


  • 是的,这正是我想要的行为。但是,我现在无法选择其他单选按钮。我认为OP得到了这一点,但问题是,如果您在第二个示例中单击一个实际的圆,则该单击已注册(即视图模型更新),但UI不会选择新单击的单选按钮。没有人希望在任何时候选择两个框。好的。现在这是有道理的。mhu的修复程序成功了。然而,我很惊讶Knockout没有为我处理UI更新。+1,意外行为indeedWhoa!这是一个很好的解决方案。谢谢似乎还有一个带击倒的bug?我本来希望Knockout在可观察对象发生变化后为我更新UI。
    <li data-bind="click: function() { $parent.val($data); return true; }">