SvgAnimatedString缺少方法indexOf

bsr*_*bsr 6 javascript d3.js angularjs

我正在使用d3.jsangularjs.当在svg对象中使用超链接(通过angular指令呈现)时,我收到此错误.

在此输入图像描述

根据这里的doc ,svgAnimatedString没有任何特定的方法.我该怎么解决这个问题.我可以注射方法或任何其他方式.

以下代码的一部分.谢谢.

svg.selectAll("a.node")
                        .data(data)
                        .enter().append("a")
                        .attr("class", "node")
                        .attr("xlink:href", "test")
                        .append("rect")
Run Code Online (Sandbox Code Playgroud)

Joh*_*ven 6

如果必须处理不处理SVG图形的库,可以使用以下内容在SVGAnimatedString上定义split.冲洗并重复其他字符串原型方法.

 // Set a split prototype on the SVGAnimatedString object which will return the split of the baseVal on this
 // SVGAnimatedString instance
 SVGAnimatedString.prototype.split = function(){ return String.prototype.split.apply(this.baseVal, arguments); };
Run Code Online (Sandbox Code Playgroud)


met*_*ion 4

各种图书馆都遇到过这个问题(即这里)。在 SVG 中,当您尝试获取锚点的 href 属性时,它会返回一个SVGAnimatedString. 您可以通过使用 来获取实际的字符串SVGAnimatedString.baseVal。我不知道如何在不修补 Angular 的情况下做到这一点,但这会让您了解需要什么:

  this.$$rewriteAppUrl = function(absoluteLinkUrl) {
     if (absoluteLinkUrl.baseVal != null) {
        absoluteLinkUrl = absoluteLinkUrl.baseVal;
     }
    if(absoluteLinkUrl.indexOf(appBaseUrl) == 0) {
      return absoluteLinkUrl;
    }
  }
Run Code Online (Sandbox Code Playgroud)