javascript - Knockout js复选框勾选绑定(bind)

标签 javascript knockout.js

在 knockout js 中,我试图对数据数组执行 foreach 以显示复选框。我遇到的问题是,在我与其中一个框交互之前,选中的数据绑定(bind)似乎不会运行。例如,下面我生成了 5 个文本框,其中没有一个显示为选中状态。然而,当我点击“一”、“二”和“四”时,它们也会被选中,因为它们应该从一开始就被选中。

Javascript:

var viewModel = {};

viewModel.choices = ["one", "two", "three", "four", "five"];
viewModel.selectedChoices = ko.observableArray(["two", "four"]);

viewModel.selectedChoicesDelimited = ko.dependentObservable(function () {
        return viewModel.selectedChoices().join(",");
    });

ko.applyBindings(viewModel);

HTML:

<ul class="options" data-bind="foreach: choices">
    <li><label><input type="checkbox" name="NotifyMembers" data-bind="checked: $parent.selectedChoices, attr: { value: $data }" /><span data-bind="text: $data"></span></label></li>
</ul>
<hr />
<div data-bind="text: selectedChoicesDelimited"></div>

fiddle 位于:http://jsfiddle.net/bvGG3/1/

感谢您的帮助。

最佳答案

在 3.0 版之前的 Knockout 中,绑定(bind)按顺序触发,所以你的问题是你的 checked 绑定(bind)在你的 attr 绑定(bind)之前触发。

因此您需要更改绑定(bind)的顺序:

<input type="checkbox" name="NotifyMembers" 
       data-bind="attr: { value: $data }, checked: $parent.selectedChoices" />

演示 JSFiddle .

或者当您更新到 3.0(演示 JSFiddle)时,您的原始代码将起作用。

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

相关文章:

javascript - CSS3定位及误区使用

javascript - 与嵌套对象属性相比,下划线 GroupBy 单个方面

Javascript String.fromCharCode 返回错误值

html - 如何将 JayData 与 Knockout 集成

javascript - 使用 C# 异步回发保存 Javascript 值

javascript - 在 JQuery 的一组按钮中查找类元素

javascript - 语义用户界面下拉列表中的简单不可点击文本

javascript - 为什么我会收到 self.description(...) is undefined ?

javascript - 如何防止 knockout.js 数据绑定(bind)中的字符转义?

javascript - 如何将环境变量转换为 JS 中的对象?