3

動作しないコードがあります。これはここhttp://jsfiddle.net/JPBarbosa/uxwTM/4/です。

データバインドパラメータoptionsValueは、パラメータoptionsTextのようには機能しません。

両方に同じ関数を使用しています!

<select data-bind="options: times, optionsText: function(item) { return item.toLocaleTimeString(); }, optionsValue: function(item) { return item.toLocaleTimeString(); }, value: selectedTime"></select>

よろしく、JP。

4

1 に答える 1

4

渡すオブジェクトはoptionsValue、値として使用するプロパティの名前に対応する文字列である必要があります。そのような値に設定することはできませんoptionsText。残念ながら、同じようには機能しません。

times代わりに、配列を必要な値にマップする方が簡単です。

<select data-bind="options: ko.utils.arrayMap(times(), function (time) { return time.toLocaleTimeString(); }), value: selectedTime"></select>

ただし、マッピングコードは表示されないようにする必要があります。したがって、マップされた値を返す計算されたオブザーバブルをビューモデルに追加します。

var ViewModel = function() {
    // ...
    self.mappedTimes = ko.computed(function () {
        return ko.utils.arrayMap(self.times(), function (time) {
            return time.toLocaleTimeString();
        });
    })
};
<select data-bind="options: mappedTimes, value: selectedTime"></select>

更新されたフィドル

于 2012-10-18T23:41:35.987 に答える