0

knockout.js のオプション バインドに苦労しています。このように、オプションバインディングを使用しない場合

<select id="AddProductSelect" name="chosenSpaProduct">
   <!-- ko foreach: Spa.SpaProductList -->
         <option data-bind="text: Name" ></option>
   <!-- /ko -->
</select>

それは正常に動作します。下の行では、このようなオプションバインディングを使用しようとしています

<select data-bind="options: Spa.SpaProductList, optionsText: 'Name'"></select>

select要素には何も表示されません。

Spa.SpaProductList はオブジェクトの配列です。私が間違っていることについてのアイデアはありますか?

編集:関連するJS:

    $(document).ready(function () {
       var initialData = @Html.Raw(Json.Encode(Model));
       viewModel = new ViewModel(initialData);
       ko.applyBindings(viewModel);
       viewModel.ViewLoaded(true);

       function ViewModel(initialData) {
           var self = this;
           ko.mapping.fromJS(initialData, {}, self); 
           (...)
       }
    }    
4

2 に答える 2

0

optionsValueパラメータが不足しているようです。knockout.jsのドキュメントから:

ユーザーが任意の JavaScript オブジェクト (文字列だけでなく) の配列から選択できるようにする場合は、optionsTextおよび optionsValueパラメーターを参照してください。

彼らが与える例は次のとおりです。

<select data-bind="options: availableCountries, optionsText: 'countryName', value: selectedCountry"></select>
于 2013-05-04T01:19:48.273 に答える