Javascript d3.js v4和AngularJS中不受信任的HTML
我遇到了特殊字符显示不正确的问题,我正在通过angular js指令生成一个d3.js树布局图,该指令将文本添加到图中,但任何特殊字符都没有正确显示,而不是我得到的撇号';及;而不是&等等。。。我尝试过使用过滤器Javascript d3.js v4和AngularJS中不受信任的HTML,javascript,angularjs,unicode,d3.js,Javascript,Angularjs,Unicode,D3.js,我遇到了特殊字符显示不正确的问题,我正在通过angular js指令生成一个d3.js树布局图,该指令将文本添加到图中,但任何特殊字符都没有正确显示,而不是我得到的撇号';及;而不是&等等。。。我尝试过使用过滤器$filter('html')(d.name),但运气不佳 app.filter('html',function($sce){ return function(input){ var value = input.toString();
$filter('html')(d.name)
,但运气不佳
app.filter('html',function($sce){
return function(input){
var value = input.toString();
console.log(input);
var output = $sce.trustAsHtml(value);
console.log(output);
return output;
}
});
我还尝试了以下方法:
nodeEnter.append("text")
.attr("dy", 3)
.attr("x", 1e-6)
.attr("compile-template","")
.attr("ng-bind-html", function(d) {
var output = $sce.trustAsHtml(d.name);
return output;
})
或
如果运气不好,有没有其他方法可以通过我的指令显示特殊字符?问题是,现在,您正试图在SVG文本元素中使用一个,但这不起作用 第一个解决方案就是将HTML实体更改为正确的。例如,要显示符号AND,而不是:
.text("&")
或
你应该做:
.text("\u0026")
检查代码段:
var svg=d3.选择(“主体”)
.append(“svg”)
.attr(“宽度”,400)
.attr(“高度”,200);
svg.append(“文本”)
.attr(“x”,10)
.attr(“y”,20)
.text(“这是一个带有HTML实体的符号:&;(不好)”;
svg.append(“文本”)
.attr(“x”,10)
.attr(“y”,50)
.text(“这是一个带有Unicode:\u0026(完美)”的符号)代码>
您是否将此文本附加到SVG?是的,先生@Gerardofurta我想我知道你要去哪里吗,svg不能解释html?我使用字符串中的replace函数替换'及;这是可行的,但还有更优雅的解决方案吗?我正在写一个答案。。。不能在SVG中使用HTML实体。你能把它们改成unicode吗?还是将文本作为包含HTML实体的字符串获取?是否有预先建立的javascript函数?继续写你的答案吧,我没有想到这是一个SVG
.text("&")
.text("\u0026")