多分私はこれがどのように機能するか誤解しています。選択した要素のオプションを設定するためにknockout.jsを使用したいと思います。これを実現するために、次のマークアップを使用しています。
<select data-bind="options: type_options, optionsText: function(item) {
return item.text;
}, optionsValue: function(item) {
return item.value;
}, optionsCaption:'Select a type...',
value: type">
関連するモデルコードは次のとおりです。
var myModel = {
type: ko.observable(),
type_options: ko.observableArray([
{text: "String 1", value:1},
{text: "String 2", value:2},
{text: "String 3", value: 3},
{text: "String 4", value: 4},
{text: "String 5", value: 5}
]),
}
これで、ドロップダウンはすべての正しいテキストと値で正しくレンダリングされますが、ドロップダウンからオプションを選択すると、「type」の値が正しく設定されません。
たとえば、「文字列4」というラベルの付いたオプションを選択し、ブラウザで次のコマンドを実行した場合:
myModel.type()
値「4」が返されると思います。代わりに、オブジェクト全体を取得します。
Object
text: "String 4"
value: 4
__proto__: Object
私の質問は、オブジェクト全体ではなく、オプションのvalue属性に基づいてtypeの値を設定するためにノックアウトを取得するにはどうすればよいですか?