取消复选框绑定
Knockout check box binding
我试图有一个复选框更新一个可观察对象的值。这部分工作,但复选框之后不"检查"自己。为了解决这个问题,我尝试添加check:绑定,寻找我刚刚在click事件中设置的值,但这也不起作用。
我可见
appViewModel.test = ko.observable(1);
的复选框<input type="checkbox" data-bind="checked: test() == 4, click: test.bind($data, 4)"/>
您可以编写一个点击处理程序,检查该值是否为4(或任何您想要的任意值),然后执行相应的操作,如下所示:
HTML:<input type="checkbox" data-bind="checked: checkBoxValue() === 4,
click: handleCheckBoxClick">
<br/>
<div>
<span>Debug:</span>
<pre data-bind="text: ko.toJSON($root, null, 2)"></pre>
</div>
JavaScript: var ViewModel = function () {
var self = this;
self.checkBoxValue = ko.observable(0);
self.handleCheckBoxClick = function () {
if (self.checkBoxValue() !== 4) {
self.checkBoxValue(4);
} else {
self.checkBoxValue(0);
}
return true;
};
};
ko.applyBindings(new ViewModel());
注意:我添加了调试输出,这样您就可以在与复选框交互时看到视图模型中的底层checkBoxValue
值。
见此处
你可以使用computed来捕捉可观察到的变化:
var ViewModel = function(first, last) {
var self = this;
this.checked = ko.observable(false);
this.test = ko.observable();
this.isChecked = ko.computed(function(){
var test = self.test();
if(test === '4')
{
self.checked(true);
return;
}
self.checked(false);
});
};
这是一个jsfield
checked
绑定希望是双向的,既可写又可读。但是,当您单击它时,它不能写入测试。而不是有一个点击绑定,你应该有一个测试设置为4的写入功能,你使用的计算作为checked
绑定。
var vm = {
test: ko.observable(1)
};
vm.checked = ko.computed({
read: function () { return vm.test() == 4; },
write: function (newValue) {
vm.test(newValue ? 4 : 1);
}
});
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<input type="checkbox" data-bind="checked: checked"/>
<div data-bind="text:test"></div>
相关文章:
- 将角度材质设计复选框绑定到控制器中的数组
- Openlayers 3为了可见性而绑定到Vector层的复选框没有任何作用
- 具有 json 的挖空绑定复选框组
- 挖空绑定复选框组
- KO 绑定复选框:从代码更改“选中”属性,不更改可观察字段
- 将函数事件绑定到更改函数的复选框/标签
- JsViews复选框从内部循环绑定
- 如何绑定到单击以切换复选框
- 在angular js中绑定多个复选框
- ng动态生成的html/ionic复选框内的更改不绑定
- 如果父项具有onclick绑定,则复选框单击将被忽略
- 去掉js可观察数组和复选框,选中绑定失败
- AngularJs 将模型属性绑定到复选框
- 将两个数组绑定到一组复选框中 - angularjs
- 挖空.js和复选框的双向绑定
- 将可绑定复选框列添加到 Internet Explorer 中的网格
- 在AngularJS中绑定复选框或多选下拉列表
- 同时绑定复选框列表
- 基于AngularJS中字段值的绑定复选框
- 使用Knockout.js创建数据绑定复选框时未选择任何内容