2011-12-08 10 views
0

選択リストのoptionsValueを のオプション配列にバインドすることはできますか?オプションのテンプレートを配列のインデックスにバインドする

<select data-bind="options: options, optionsText: 'text', 
optionsValue: ko.utils.arrayIndexOf(**somevalue**)" /> 

それとも、私が

<select data-bind="options: options, optionsText: 'text', 
optionsValue: 'id' /> 

おかげ

{ 
    text: 'asdasd' 
} 

から

{ 
    text: 'asdasd', 
    id: 0 
} 

に私のオプションオブジェクトを変換することとやって立ち往生しています

答えて

1

あなたはJSONを介して通信するのではなく、フォームを送信している場合は、あなたが選択した値は、あなたのオブジェクトであり、好きなことの指標を表すためdependentObservableを作成することができます。

function ViewModel() { 
    this.choices = ko.observableArray([ 
     { text: "index zero" }, 
     { text: "index one" }, 
     { text: "index two" } 
    ]); 
    this.selectedChoice = ko.observable(); 
    this.selectedChoiceIndex = ko.dependentObservable(function() { 
     return this.choices.indexOf(this.selectedChoice()); 
    }, this); 
}; 

サンプル:http://jsfiddle.net/rniemeyer/hevTF/

フォームを送信していて、選択したオプション要素のvalue属性に依存している場合は、オブジェクトにインデックスを追加することをお勧めします。もう一つの選択肢は、{{each(item、index)}}}のようなjQueryテンプレートのオプション要素をemitすることです。http://jsfiddle.net/rniemeyer/h6wLr/

+0

ありがとう。これは私が期待したものではありませんが、実際にはうまくいくでしょう。 –