首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >d3.js v4和AngularJS中的不可信HTML

问d3.js v4和AngularJS中的不可信HTML
EN

Stack Overflow用户
提问于 2016-08-15 14:04:39
回答 1查看 320关注 0票数 2

我有特殊字符不能正确显示的问题,我正在通过一个角JS指令生成一个d3.js树布局图,该指令正在将文本添加到图表中,但是任何特殊字符都没有正确显示,而是撇号我得到‘和&代替&等等.我尝试过使用过滤器$filter('html')(d.name),但没有成功。

代码语言:javascript
复制
    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;
    }
});

我还尝试了以下几点:

代码语言:javascript
复制
 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;
      })

或

代码语言:javascript
复制
    nodeEnter.append("text")
      .attr("dy", 3)
      .attr("x", 1e-6)
     .text(function(d) {
        var output = $sce.trustAsHtml(d.name);  
        return output;
      })

在没有运气的情况下,还有其他方法可以通过我的指令来显示特殊字符吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-15 15:22:18

问题是,现在,您正试图在SVG文本元素中使用HTML实体,这是行不通的。

第一个解决方案就是更改HTML实体以获得正确的Unicode。例如,显示一个符号,而不是:

代码语言:javascript
复制
.text("&")

或

代码语言:javascript
复制
.text("&")

你应该这样做:

代码语言:javascript
复制
.text("\u0026")

检查代码片段:

​

代码语言:javascript
复制
var svg = d3.select("body")
    .append("svg")
    .attr("width", 400)
    .attr("height", 200);
	
svg.append("text")
    .attr("x", 10)
    .attr("y", 20)
    .text("This is an ampersand with HTML entity:  & (not good)");

svg.append("text")
    .attr("x", 10)
    .attr("y", 50)
    .text("This is an ampersand with Unicode: \u0026 (perfect)");
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

​

第二个解决方案涉及在不更改HTML实体的情况下使用它们。如果将所有HTML实体更改为Unicode对您来说不是一个选项,则可以附加一个接受异物实体的HTML。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38956615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档