我有一个名为SelectedAttributeValueIds
的observableArray,我需要使用“checked”绑定将其绑定到单选按钮列表。 e.g。
<input type="radio" data-bind="checked: SelectedAttributeValueIds" />
然而,KnockoutJS正在用一个只能观察的值替换observableArray。因此,而不是具有值[123]的SelectedAttributeValueIds,它将是“123”
我这样做是一种解决方法但是想知道是否有更简单的方法:
<input type="radio" data-bind="event: { change: function() { $parent.SelectedAttributeValueIds([$data.ID()]); } }" />
答案 0 :(得分:2)
对于单选按钮,KO假定只有一个“值”可以写入。对于复选框,它将添加/删除数组中的值。
听起来你想要总是写一个值,但是把它作为唯一元素放在一个数组中。
一种选择是创建ko.computed
来表示数组中的项目。另一种选择是使用可写的ko.computed
来绑定输入,并让它代理所需格式之间的值。类似的东西:
this.SelectedAttributeValueIds = ko.observableArray();
this.SelectedAttributeValueId = ko.computed({
read: function() {
var values = this.SelectedAttributeValueIds();
return values.length ? values[0] : [];
},
write: function(newValue) {
this.SelectedAttributeValueIds([newValue]);
},
owner: this
});