是否可以使用值绑定将Knockout可观察属性绑定到单选按钮?
这是我正在尝试做的,但是值最终是字符串“[Object object]”而不是我的observable属性的实际实例:
<input type="radio" name="vehicleGroup" data-bind="checked: vehicleGroupViewModel().selectedGroupOption , value:vehicleGroupViewModel().car" />
<input type="radio" name="vehicleGroup" data-bind="checked: vehicleGroupViewModel().selectedGroupOption , value:vehicleGroupViewModel().truck" />
这是我正在使用的视图模型:
var VehicleGroupViewModel = function(){
var self = this;
this.selectedVehicleGroup = ko.observable();
this.selectedGroupOption = ko.observable();
this.selectedGroupOption.subscribe(function (newVal) {
self.selectedVehicleGroup(newVal);
}
this.selectedGroup = ko.observable();
this.car = ko.observable(new VehicleViewModel());
this.truck = ko.observable(new VehicleViewModel());
}
var VehicleViewModel = function(){
this.name = ko.observable();
}
所以最后我希望Car或Truck VehicleViewModel可以在selectedVehicleGroup中观察。
答案 0 :(得分:3)
记录here only Select节点能够将任意JavaScript对象绑定到值。其他输入需要字符串值,这就是您的值返回“[Object object]”的原因。
您仍然可以执行您想要的操作,但您必须手动映射密钥并自行查找相应的对象。这是一个小提琴演示:
答案 1 :(得分:2)
对于接受答案的其他读者来说,KO v3添加了checkedValue绑定,现在可以实现这一点。
答案 2 :(得分:0)
我也需要这个。我的解决方案类似于John Earles,除了我使用的是computed
而不是subscribe
:
self.selectedVehicleGroup = ko.computed(function(){
return ko.utils.arrayFirst(self.availableGroups(), function (group) { return group.name() == self.selectedGroupOption(); });
});