2016-03-31 8 views
1

Also habe ich eine Auswahlliste, die bis zu einem gewissen Daten gebunden ist:HTML-Entitäten in Auswahllisten Knockout

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

jedoch einige der Daten (die durch eine API zur Verfügung gestellt wird) enthält HTML-Entitäten. Beispiel: Die Daten, die an das Label der optgroup geliefert werden. &amp; wird gerendert als &amp;

Wie kann ich diese richtig rendern?

Antwort

0

Die einzige Lösung Ich weiß, wird mit the html binding (die wie die text ist verbindlich, aber es macht html, einschließlich Einrichtungen, wie), aber ware der Auswirkungen auf die Sicherheit sein sowie die Tatsache, dass die meisten tatsächlichen html gilt nicht innerhalb option Elemente.

Hier Beweis:

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>

Wenn Sie die Daten nicht vertrauen Sie a custom binding handler mit Funktionen irgendwo dazwischen text bräuchten und html, dass nur Einheiten macht, aber nicht andere Sachen.