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

这与“All”的值为“”这一事实有关。从 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 回答