2012-04-06 39 views
3

是否可以使用值綁定將Knockout observable屬性綁定到單選按鈕?Knockout observable可以將數據綁定到單選按鈕的值嗎?

這裏就是我想要做的,但價值最終被字符串「[Object對象]」,而不是我的觀察特性的實際例子:

<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" /> 

這裏的視圖模型我m使用:

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或Vehicle VehicleViewModel在selectedVehicleGroup可觀察。

回答

3

如文檔here 只有選擇節點才能將任意JavaScript對象綁定到某個值。其他輸入需要一個字符串值,這就是爲什麼你的值返回「[Object object]」。

你仍然可以做你想做的事情,但你必須手動映射一個鍵並自己找到合適的對象。下面是一個說明一個小提琴:

http://jsfiddle.net/jearles/JcPXy/

0

我需要這一點。我的解決辦法類似於約翰Earles除了我使用的computed,而不是subscribe

self.selectedVehicleGroup = ko.computed(function(){ 
    return ko.utils.arrayFirst(self.availableGroups(), function (group) { return group.name() == self.selectedGroupOption(); }); 
}); 

http://jsfiddle.net/JcPXy/91/

2

FYI其他讀者來接受的答案,KO V3添加checkedValue結合使得現在這一切成爲可能。

相關問題