2012-04-06 10 views
3

値バインドを使用して、ノックアウト観測可能プロパティをラジオボタンにバインドすることはできますか?代わりに、私の観察可能なプロパティの実際のインスタンスの「[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" /> 

ここで私は「ビューモデルです

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(); 
} 

をだから、最後に私が観察selectedVehicleGroupにあるように車やトラックVehicleViewModelのいずれかをしたいと思います:使用してメートル。文書here のみを選択ノードとして

答えて

3

は値に任意のJavaScriptオブジェクトを結合する能力を持っています。他の入力には文字列値が必要です。そのため、値は「[Object object]」を返しています。

あなたはまだあなたがやりたいことができますが、手動で自分でキーをマッピングし、適切なオブジェクトを見つける必要があります。

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

0

を私もこれを必要に応じて:ここでは示していフィドルです。私はsubscribeの代わりにcomputedを使用除いて私の解決策は、ジョン・アールと同様であった:受け入れ答えに来て、他の読者のためのFYI

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

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

2

、KO v3は今、これが可能にされcheckedValueバインディングを追加しました。

関連する問題