在 attr 绑定中绑定对象 - KnockoutJs
Bind object in attr binding - KnockoutJs
有一个要求,我需要在值属性中绑定对象,因为 KnockoutJs 在复选框事件中将值作为第一个参数发送。
当作为单个值传递时,一切都很好。
<div data-bind="foreach: Items">
<input type="checkbox" value data-bind="attr: { value: id }, checked: selectedVal">
this.selectedVal.subscribe((newVal: any) => {
alert(newVal);
});
我想传递迭代项对象本身,而不是迭代项中的一个 属性。
Items = [
{
id: 1,
name: 'Adam',
},
{
id: 2,
name: 'Bailey',
},
{
id: 3,
name: 'Cathy',
},
]
在订阅时,我想要带有 ID 和名称的整个对象,让我知道我该怎么做?
您可以使用checkedValue: $data
告诉复选框写入整个对象。例如:
const items = [
{
id: 1,
name: 'Adam',
},
{
id: 2,
name: 'Bailey',
},
{
id: 3,
name: 'Cathy',
},
];
const selected = ko.observableArray([]);
selected.subscribe(console.log);
ko.applyBindings({ items, selected });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div data-bind="foreach: items">
<label>
<input type="checkbox" data-bind="checkedValue: $data, checked: selected">
<span data-bind="text: name"></span>
</label>
</div>
有一个要求,我需要在值属性中绑定对象,因为 KnockoutJs 在复选框事件中将值作为第一个参数发送。 当作为单个值传递时,一切都很好。
<div data-bind="foreach: Items">
<input type="checkbox" value data-bind="attr: { value: id }, checked: selectedVal">
this.selectedVal.subscribe((newVal: any) => {
alert(newVal);
});
我想传递迭代项对象本身,而不是迭代项中的一个 属性。
Items = [
{
id: 1,
name: 'Adam',
},
{
id: 2,
name: 'Bailey',
},
{
id: 3,
name: 'Cathy',
},
]
在订阅时,我想要带有 ID 和名称的整个对象,让我知道我该怎么做?
您可以使用checkedValue: $data
告诉复选框写入整个对象。例如:
const items = [
{
id: 1,
name: 'Adam',
},
{
id: 2,
name: 'Bailey',
},
{
id: 3,
name: 'Cathy',
},
];
const selected = ko.observableArray([]);
selected.subscribe(console.log);
ko.applyBindings({ items, selected });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div data-bind="foreach: items">
<label>
<input type="checkbox" data-bind="checkedValue: $data, checked: selected">
<span data-bind="text: name"></span>
</label>
</div>