2

多分私はこれがどのように機能するか誤解しています。選択した要素のオプションを設定するために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の値を設定するためにノックアウトを取得するにはどうすればよいですか?

4

1 に答える 1

4

さて、関数の代わりに、options配列の変数のテキストを渡すことができるはずです。それが問題の原因であるかどうかはわかりませんが、マークアップは次のようになります。

<select data-bind="options: type_options, optionsText: 'text', optionsValue: 'value', optionsCaption:'Select a type...', value: type"></select>

それはあなたが望むものを手に入れるはずです、完全な例についてはフィドルを見てください。

于 2012-10-03T19:07:53.433 に答える