【发布时间】:2016-07-19 15:48:07
【问题描述】:
我有一个 foreach 循环,我可以从中获取 cash 和 orig id 。 我在 p 标签之后使用了一个复选框,并且该复选框仅返回 true 或 false。
<div data-bind="foreach : info">
<p data-bind="$data.cash"></p>
<p data-bind="$data.orig_id"></p>
<input type="checkbox" data-bind="Switch: $root.on_off"/>
</div>
我想要做的是使用复选框来更改数据库中的某些内容,所以基本上我需要获取该复选框的 orig_id。所以我在想,如果我添加点击绑定,它可能会给我从 for each 函数中获得的每个数组的 orig_id,但当然没有工作。所以我的问题是如何在每次点击开关框时获取 orig_id。
我尝试在 js 上做这样的事情,所以我可以从复选框输入字段中获取 orig ID。
self.sendCheckBoxInfo = function( data, event){
alert(data.orig_id);
}
<div data-bind="foreach : info">
<p data-bind="$data.cash"></p>
<p data-bind="$data.orig_id"></p>
<input type="checkbox" data-bind="Switch: $root.on_off, click : $root.sendCheckBoxInfo" />
这里需要的是 Switch 数据绑定代码
ko.bindingHandlers.Switch = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
$elem = $(element);
$(element).bootstrapSwitch();
$(element).bootstrapSwitch('setState', ko.utils.unwrapObservable(valueAccessor())); // Set intial state
$elem.on('switch-change', function (e, data) {
valueAccessor()(data.value);
}); // Update the model when changed.
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var vStatus = $(element).bootstrapSwitch('state');
var vmStatus = ko.utils.unwrapObservable(valueAccessor());
if (vStatus != vmStatus) {
$(element).bootstrapSwitch('setState', vmStatus);
}
}
【问题讨论】:
-
这个帖子不太清楚。一方面,任何地方都没有(可观察的)数组。尝试为您的问题创建一个minimal reproducible example。
-
很清楚,我在问checked databind是否发送了除真假以外的更多信息
-
你命名为
viewModel之后的参数将有当前的$data,其中包括orig_id。见knockoutjs.com/documentation/custom-bindings.html -
@MasnadNihit 检查我的回答并告诉我
-
@RoyJ 我的 viewModel 是 functionGettingInfo(root /* root not required */, money) { var self = this; self.ID = 钱.ID; self.ORIG_ID = 钱.ORIG_ID;是否有可能以某种方式将其分配给处理程序中的 viewModel 参数?
标签: javascript jquery checkbox knockout.js