2016-03-07 221 views
0

我在Knockout JS中爲bootstrap multiselect做了自定義綁定。Bootstrap Multiselect不顯示下拉列表

我是新來的自定義綁定在Knockout JS。

我已將this custom binding jsfiddle代入bootstrap select,並將其修改爲this jsfiddle以代表bootstrap multiselect並且還包含我自己的視圖模型數據。實際的自舉多選按鈕會顯示,所以用戶可以看到多選按鈕,但點擊它後,沒有任何東西會掉下來。

檢查我的網頁上顯示了<select>此輸出HTML:

HTML(這是正確的 - 問題是不是與此):

<select multiple="multiple" data-bind="multiselect: _categoryID, 
       optionsText: '_name', 
       optionsValue : '_id', 
       multiselectOptions: { optionsArray: _categories }" class="multiselect" style="display: none;"> 
<option value="1">Meat-Free Meat</option> 
<option value="2">Dairy-Free Dairy</option> 
<option value="3">Confectionery</option> 
<option value="4">Baking</option> 
<option value="5">Dessert</option> 
       </select> 

這裏是低於選擇的是位引導多選插件增加(這是不正確的 - 問題就在這裏 - 看<ul>沒有<li>的:

<div class="btn-group"> 
<button type="button" class="multiselect dropdown-toggle btn btn-default" data-toggle="dropdown" title="Dairy-Free Dairy, Confectionery" aria-expanded="false"> 
<span class="multiselect-selected-text">Dairy-Free Dairy, Confectionery</span> 
<b class="caret"></b> 
</button> 
<ul class="multiselect-container dropdown-menu"> 
</ul></div> 

爲什麼點擊bootstrap multiselect按鈕不會導致下拉菜單出現? AKA爲什麼<ul>是空的? 編輯:在這個問題上的所有工作,現在可以在this jsfiddle

+0

這將是更好,如果你可以在這裏提供您的自定義多選綁定代碼。或者不適合工作場景的小提琴。 – Dandy

+0

@Dandy我創建了jsfiddle並將其添加到我的問題的底部,但無法導入bootstrap multiselect外部資源 – BeniaminoBaggins

+0

您使用rawgit從git導入模塊。你也需要jQuery。我在這裏更新了你的小提琴:http://jsfiddle.net/bkzb272j/138/ 然而,按運行加載一個新的顯示,這很奇怪。 –

回答

2

替換

$(element).multiselect('refresh');

$(element).multiselect('rebuild');

Working JsFiddle

+0

哇。我已經轉向另一種選擇(沒有自定義綁定,而是使用foreach綁定select來插入'

+0

很高興爲您效勞。請參閱鏈接「http://davidstutz.github.io/bootstrap-multiselect/」。本文檔非常清晰,涵蓋了Bootstrap多選的所有選項。 – Nofi

0

嘗試的選擇具有display:none,因爲它是隱藏的。 Bootstrap爲它提供了一個替代前端。您與Bootstrap小部件進行交互,它可以作爲更新「真實」選擇狀態的代理。

我不知道爲什麼下拉菜單沒有顯示在您的應用程序中。正如你注意到的,它在小提琴中起作用。我最好的猜測是你的選項列表結構不正確。

+0

謝謝,我已經添加了一個jsfiddle的問題,只是無法導入引導多選的外部資源 – BeniaminoBaggins