2016-03-31 171 views
1

所以我有一个绑定到一些数据的选择列表:HTML实体淘汰赛

<select> 
    <option selected="selected">-- Please select your company --</option> 
    <!-- ko foreach: dealerList --> 
     <optgroup data-bind="attr: {label: name}, foreach: dealers"> 
      <option data-bind="text: name, option: $data"></option> 
     </optgroup> 
    <!-- /ko --> 
</select> 

然而,一些数据(这是由一个API提供)包含HTML实体。例如,提供给optgroup标签的数据。 &amp;呈现为&amp;

如何正确呈现这些内容?

回答

0

我知道是用the html binding(这就好比text约束力,但它呈现HTML,包括实体,是),但是安全隐患的洁具以及事实的唯一解决方法是最实际htmloption元素内无效。

这里的证明:

ko.applyBindings({ 
 
    dealerList: [ 
 
    { 
 
     name: 'group 1', 
 
     dealers: [ 
 
     { name: 'Mark &amp; Sons' } 
 
     ] 
 
    } 
 
    ] 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script> 
 
<select> 
 
    <option selected="selected">-- Please select your company --</option> 
 
    <!-- ko foreach: dealerList --> 
 
     <optgroup data-bind="attr: {label: name}, foreach: dealers"> 
 
      <option data-bind="html: name, option: $data"></option> 
 
     </optgroup> 
 
    <!-- /ko --> 
 
</select>

如果你不能信任你需要a custom binding handler与特征texthtml介于两者之间,即只呈现实体而不是其他东西的数据。