javascript - Knockoutjs多选列表不渲染html

标签 javascript knockout.js multi-select

假设我在列表中分别有五个元素

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 渲染空白。 (即使当我控制台日志时,它清楚地显示前面的空格,但不会在多选列表中显示它。

有没有人想到一个好的解决方案?

最后的手段可能是编写它自己的选项绑定(bind),它也使用数据绑定(bind) html 呈现 html 部分。

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

最佳答案

经过数小时的测试,我发现用 \t 替换   确实会在字符串前面添加空格,但话又说回来,多 -选择框不会呈现这些。

我所做的是,您必须创建一个自定义 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

关于javascript - Knockoutjs多选列表不渲染html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46626160/

相关文章:

javascript - plupload - 发送另一个带有上传文件的请求参数

javascript - 使用 script 标签延迟加载 HTML 小部件

javascript - 使用 ui 路由器时在应用程序配置中使用 $http 服务

javascript - 如何从 Knockoutjs toJS() 中排除某些属性

javascript - knockout validation - 让输入验证其他字段

javascript - jQuery MultiSelect 库使用不正确的方法来处理 "Select All"?

javascript Date 为什么 Date new Date ("2011-12-13") 被认为是星期一而不是星期二?

javascript - 如何在不添加更多 html 的情况下单独切换 foreach div 的 knockout ?

javascript - 动态更改 Ext JS 5.1.3 MultiSelector 中的搜索选项

javascript - 将选定的标签与右侧的 Kendo Multi-Select 对齐?