Knockoutjs多选列表不渲染HTML

问题描述:

比方说,我在列表五行,respectivlyKnockoutjs多选列表不渲染HTML

item1 
  item2 
   item3 
  item4 
item5 

如何才能让这个选择框将呈现HTML并显示空白需要的地方。

选择框本身就是如下。

<select id="formSectors" multiple size="5" class="form-control" data-bind="options: sectors, optionsText: 'Name', selectedOptions: newForm().Sectors"></select> 

我已经试过的东西,一个人建议用data-bind="foreach: sectors"<option data-bind="html: Name"></option>,但是这导致了newForm().Sectors有文本值,而不是对象存在,即使值正确呈现。

我已经搜索了这一点,似乎没有正确的方法来使html呈现空格。 (即使当我控制台日志,它清楚地显示空白盈,但不显示出来多选名单上。

有没有人认为应该是一个很好的解决方案呢?

最后的手段可能是写它自己的选项结合,呈现HTML部分以及使用数据绑定HTML。

EDIT1 //似乎如果我点击右键并选择编辑为html对铬,它实际上呈现&&amp;,这会导致不正确html在这个意义上讲,这就是它没有渲染的原因。

经过数小时和数小时的测试后,我发现用\t代替&nbsp;确实会在字符串前添加空格,但再次,多选框并不会显示这些空格。

我所做的是您必须创建一个自定义的optionsText函数来替换knockoutjs的默认可视化工具。

我做到了这样:

<select id="formSectors" 
     multiple 
     size="5" 
     class="form-control" 
     data-bind="options: sectors, 
     optionsText: function(item){return item.Name.split('\t').join('&nbsp;&nbsp;&nbsp;&nbsp;')}, 
     selectedOptions: newForm().Sectors"> 
</select> 

还几乎拆分字符串在\t以及适当的HTML代替他们的空间,从而在一个漂亮的列表。

example of list then

+1

这真的很有趣..感谢分享! – Ray