2015-04-29 7 views
1

Я пытаюсь создать раскрывающийся список с html-кодированными параметрами в knockout js с использованием привязки опций.Закодированный HTML в optionsText binding knockout js

Как я могу декодировать текст, возвращенный из функции, привязанной к привязке optionsText.

<select data-bind="options: items, optionsText: function(item){ return "decoded text"}"></select> 

В общем, мне нужна функция, которая принимает кодированную строку html и возвращает декодированный текст.

т.е. функция принимает что-то вроде

blah blah balh <sup>TM</sup>

и вернуть

бла-бла-бла ™

ответ

2

Это не будет возможным. option tag не разрешено иметь другие теги в качестве контента, только «Normal character data». Это означает, что вы можете использовать объекты, например. &#8482; или &trade; (который отображается как «™»), который должен работать для вашего конкретного примера.

Для полноты для Knockout части, если вы были попробовать то, что вы после этого, у вас есть два варианта:

  • использует foreach связывание и создавать свои собственные option элементов с html связанным содержание (в отличии от text связанных содержимых)
  • использовать optionsAfterRender связывания для настройки визуализированных элементов опциев (благодаря @CaseyWebb для отметив этот вариант в комментариях)
+0

Вы _can_ делаете это с привязкой опций, используя привязку 'optionsAfterRender' (http://jsfiddle.net/CaseyWebb/uqmt8ora/), но, как вы сказали, это все еще недействительный HTML. – CaseyWebb

+0

@CaseyWebb Ох, не знал об этом привязке, интересный «вариант»: D. Я обновил свой ответ, чтобы включить его. – Jeroen