2012-11-09 101 views
1

我在選擇列表上使用knockout options bindingselect2 plugin。最初,我不想默認選擇任何選項,而是想顯示文本,如'選擇國家',並且應該首先選擇該文本。爲此,我使用了淘汰賽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也。

如何解決這個問題?

回答

1

試試這個代碼

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


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

請參閱此鏈接http://jsbin.com/ivetel/19/edit

+1

它不具有相同的「選擇」的樣子,所以我仍然不認爲這個答案是正確的。對於海報的情況可能是可以接受的,但我認爲至少值得說明的是它有一個「佔位符」/灰色的外觀。 –

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的來源以使用空值選項。