我遇到了问题,绑定到选择列表的所有元素都会自动编码(或转义)。我使用以下场景:
- 用户单击多选中的元素;
- 单击选项中的文本显示为文本输入值(html 输入类型 = 文本);
- 此复制的文本值已编码,因为单击选项中的文本实际上也已编码;例如,输入将包含
N&M
代替N&M
;
是否可以防止编码,或者可能有一些解决方法?
谢谢。
我遇到了问题,绑定到选择列表的所有元素都会自动编码(或转义)。我使用以下场景:
N&M
代替N&M
;是否可以防止编码,或者可能有一些解决方法?
谢谢。
如果我正确理解您的问题,那么是的,有一种方法可以设置select
元素的数据绑定,以便标签和值属性以您希望的方式显示。
要做到这一点,您必须传递optionsText
andoptionsValue
绑定一个函数,如下所示:
<select data-bind="options: list,
optionsText: function(item) { return unescape(item); },
optionsValue: function(item) { return unescape(item); },
value: selectedOption"></select>
该unescape
函数应该是清理列表中每个项目的标签和/或值的函数之一。您甚至可以通过在视图模型中编写函数来使其更清晰,如下所示:
optionsText: unescapeMyItem
...然后在您的视图模型中声明:
this.unescapeMyItem = function(item) {
return _.unescape(item); // your code to unescape the value
}
至于 unescape 功能,您可以例如使用Underscore 的 unescape 功能来执行此任务。
我做了一个小提琴,所以你可以看到它是如何工作的(我已经使用了下划线函数)。