1

選択リストでノックアウトオプションバインディングselect2プラグインを使用しています。最初は、デフォルトでオプションを選択したくないので、代わりに「国を選択..」のようなテキストを表示したいので、このテキストを最初に選択する必要があります。このために私はノックアウトを使用しoptionsCaption bindingました。正常に動作しますが、選択リストにselect2プラグインを適用すると、最初のデフォルトのテキストが選択されません。ここに私のコード:

HTML

<select data-bind="options: array, optionsCaption: 'All'" size="1">
</select>

JS

$('select').select2();

function VM(){
  this.array = 
    ['Afghanostan', 'Albania', 'Algeria', 'Argentina']; 
}

ko.applyBindings(new VM());

JSFIDDLEも作成しました。

この問題を解決する方法は?

4

2 に答える 2

1

このコードを試してください

$('select').select2({
  placeholder: "ALL"
});


<select data-bind="options: array" size="1" style="width: 200px;">
    <option><option>
</select>

このリンクを参照してくださいhttp://jsbin.com/ivetel/19/edit

于 2012-11-09T05:47:14.893 に答える
0

これは、「すべて」の値が「」であるという事実と関係があります。select2のソースから:

    initSelection: function () {
        var selected;
        if (this.opts.element.val() === "") {
            this.close();
            this.setPlaceholder();
        } else {
            var self = this;
            this.opts.initSelection.call(null, this.opts.element, function(selected){
                if (selected !== undefined && selected !== null) {
                    self.updateSelection(selected);
                    self.close();
                    self.setPlaceholder();
                }
            });
        }
    }

ご覧のとおり、element.val()===''の場合は短絡します。空の値オプションを使用するには、select2のソースを変更する必要があります。

于 2012-11-09T05:41:59.467 に答える