如何将ngOptions与包含HTML实体的字符串一起使用
How do I use ngOptions with a string that contains HTML entities?
我正在使用ngOptions构建一个选择菜单,但我的一个标签中有一个HTML实体&
。标签显示为Books & Stuff
而不是Books & Stuff
。我的玉石是这样的:
select(ng-show="isType === 'select'", id="{{id}}", ng-model="model", ng-options="o.id as o.label for o in options")
如何使HTML实体正确显示?
更新
我正在尝试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}}")
这显示了正确的html实体,但不再根据模型选择正确的选项。看见http://jsfiddle.net/ucLvjvkn/1/例如
解决此问题的一种方法是使用ng-repeat
和ng-bind-html
(包含在ngSanitize中)来代替ng-options
。以下是的工作示例
var app = angular.module('app', ['ngSanitize']);
<option ng-repeat="options in options" ng-bind-html="options.text" value="{{options.text}}"></option>
JSFiddle链接-工作演示
此外,如果您必须使用ng-options
,请在绑定之前使用以下辅助函数首先解码您的值
function htmlDecode(input) {
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes[0].nodeValue;
}
JSFiddle链接-ng-options
演示
在其他答案的基础上,您可以使用过滤器来完成此操作,并获得继续使用ng-options
的好处。示例过滤器:
myApp.filter('decoded', function() {
"use strict";
function htmlDecode(input) {
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes[0].nodeValue;
}
return function(input) {
return htmlDecode(input);
}
});
然后您可以在ng选项中应用过滤器。例如:
ng-options="o.id as o.label | decoded for o in options"
我很惊讶它能起作用,但它在1.3.20中对我起了作用,而且它比其他解决方案更优雅!
不过这样做可能很昂贵。此处为过滤器的优化es6版本:https://gist.github.com/DukeyToo/ba13dbca527f257a6c59
相关文章:
- 高亮显示与数组字符串一起使用时文本插件中断
- 将require('..')与变量一起使用与在webpack中使用字符串相比
- 如何将动态构建的字符串作为http头在http.call中与流星一起传递
- JavaScript 将字符串与退格符连接在一起
- 撇号标记在javascript字符串中与Backslash一起发送,该字符串使用ajax作为json对象的一部分发送到p
- 如何将ngOptions与包含HTML实体的字符串一起使用
- 将变量与 HTML 字符串一起使用,并计算
的数量 - JS:转义字符串末尾带有反斜杠的字符串,用于与jQuery函数一起使用
- 与 RTL 语言一起使用时字符串替换函数调用的顺序
- 如何让多个元素与jQuerys一起工作 没有.冲突();字符串
- 在 jQuery 中将字符串加在一起
- 在引用错误中将字符串放在一起:左侧的赋值无效
- 在 JavaScript 中用多个分隔符拆分公式字符串,并保留分隔符,然后将字符串重新组合在一起
- JavaScript使用Regex按大写字母拆分字符串,除非在一起
- JavaScript,将我使用过parseInt的两个变量添加到一起,像字符串一样输出
- JavaScript 将字符串添加在一起
- 将字符串与数组变量混合在一起,为javascript中的元素分配id
- 将拼接与字符串数组一起使用
- 将换行符和字符串一起存储在变量中
- JS字符串将来自多个文本框的文本输入组合在一起