淘汰赛JS。将数据绑定到'select'而不进行编码(转义)



我面临的问题是,绑定到选择列表的所有元素都被自动编码(或转义)。我使用以下场景:

  1. 用户点击多选元素;
  2. 从点击的选项文本显示为文本输入值(html input type = text);
  3. 这个复制的文本值被编码,因为点击选项的文本实际上也被编码;例如,输入将包含N&M而不是N&M;

是否有可能阻止编码,或者可能有一些变通方法?

谢谢。

如果我正确理解你的问题,那么是的,有一种方法可以设置select元素的数据绑定,以便以您想要的方式显示标签和值属性。

要完成此操作,必须向optionsTextoptionsValue绑定传递一个函数,如下所示:

<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
}

对于反转义函数,您可以使用下划线的反转义函数来执行此任务。

我已经做了一个小提琴,所以你可以看到它是如何工作的(我已经使用了下划线函数)。

最新更新