Arrays 使用数组在敲除中绑定复选框
我有一个关于删除的问题,这是我用HTML和Javascript编写的代码,你能告诉我我的代码出了什么问题吗?当我点击复选框时,相关的输入没有被选中Arrays 使用数组在敲除中绑定复选框,arrays,checkbox,knockout.js,Arrays,Checkbox,Knockout.js,我有一个关于删除的问题,这是我用HTML和Javascript编写的代码,你能告诉我我的代码出了什么问题吗?当我点击复选框时,相关的输入没有被选中 <input type="checkbox" data-bind="checked: isWaived(0)"> <div data-bind="visible: isWaived(0)" > <div class="alert"> You have waived coverage for
<input type="checkbox" data-bind="checked: isWaived(0)">
<div data-bind="visible: isWaived(0)" >
<div class="alert">
You have waived coverage for this member0.
</div>
</div>
这是这个脚本的提琴页
将您的绑定(单选按钮上的选中的绑定和div上的可见的按钮)替换为以下内容:
members()[0].isWaived
问题是,虽然敲除可以从值isaboved(0)
中读取,但它不能写入该值,因为它是对函数求值的结果——它不是可观察的。这里我们想要观察的是成员的属性,上面的语法是如何将其传递给Knockout。您的javascript可能有点过度设计。使用正确的绑定,您可以从根模型中删除iswave和DoWave函数
HTML
members()[0].isWaived
<!-- ko with:members()[0] -->
<div>
<input type="checkbox" data-bind="checked:isWaived" />
</div>
<div data-bind="visible:isWaived">
<div class="alert">
You have waived coverage for this member <span data-bind="text:idx"></span>.
</div>
</div>
<!-- /ko -->
function Member(idx, isWaived) {
var self = this;
self.idx = idx;
self.isWaived = ko.observable(isWaived);
}
function ReviewCartViewModel() {
var self = this;
// Editable data
self.members = ko.observableArray([
new Member(0, true),
new Member(1, false),
new Member(2, false),
new Member(3, false),
]);
}
ko.applyBindings(new ReviewCartViewModel());