【问题标题】:Observable Array not binding properly to checkbox可观察数组未正确绑定到复选框
【发布时间】:2013-01-27 02:42:07
【问题描述】:

当我 foreach 循环并将布尔值绑定到复选框时,复选框不会更新。

    function ViewModel() {
        var self = this;

        self.test = ko.observableArray([ false, false, false ]);

        return self;
    }

ko.applyBindings(new ViewModel());


<div data-bind="text: ko.toJSON(test)"></div>

<div data-bind="foreach: $root.test">
    <input type="checkbox" data-bind="checked: $data" />
</div>

您可以在 jsfiddle 上查看问题: http://jsfiddle.net/KVWet/1/

【问题讨论】:

  • 你用的是什么浏览器?如果您使用 Chrome,请转到 Tools->Developer Tools 并检查控制台。它会告诉你错误。或者,如果您使用 Firefox,请下载 Firebug。
  • 我在发布的 jsfiddle 中没有看到任何错误 编辑:我链接了错误的 jsfiddle,请参阅最新的 jsfiddle.net/KVWet/1 来说明问题

标签: knockout.js


【解决方案1】:

http://knockoutjs.com/documentation/checked-binding.html

如果您的参数解析为数组,则需要特别考虑。在这种情况下,KO 会将元素设置为检查如果值匹配数组中的项目,如果不包含在数组中,则取消检查。

因为如果一个项目被选中,它的值就会被添加到一个数组中。如果没有检查,它就会把它拿走。我认为要使其正常工作,您需要将键添加到数组中,以便它可以与它所属的复选框匹配。布尔数组不会帮助 ko 将其映射到其各自的复选框。

【讨论】:

猜你喜欢
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
相关资源
最近更新 更多