2016-03-07 223 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