I'm using ngOptions to built a selection menu but one of my labels has an HTML entity in it &
. The label shows up as Books & Stuff
not Books & Stuff
. My jade is this:
select(ng-show="isType === 'select'", id="{{id}}", ng-model="model", ng-options="o.id as o.label for o in options")
How can I get HTML entities to display properly?
Update
I'm trying the answer by sal:
select(ng-show="isType === 'select'", id="{{id}}", ng-model="model")
option(ng-repeat="o in options", ng-bind-html="o.label", value="{{o.id}}")
An this displays the correct html entity but the correct option is not selected any more based on the model. See http://jsfiddle.net/ucLvjvkn/1/ for example.
A way you can solve this is to use ng-repeat
along with ng-bind-html
(included with ngSanitize) in place of ng-options
. Here is a working example
var app = angular.module('app', ['ngSanitize']);
<option ng-repeat="options in options" ng-bind-html="options.text" value="{{options.text}}"></option>
JSFiddle Link - working demo
Furthermore, if you must use ng-options
use the following helper function to decode your values first before binding
function htmlDecode(input) {
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes[0].nodeValue;
}
JSFiddle Link - ng-options
demo