Javascript 将D3图形嵌入到把手模板中

Javascript 将D3图形嵌入到把手模板中,javascript,d3.js,handlebars.js,Javascript,D3.js,Handlebars.js,我试图将d3图形嵌入handlebar模板,但当我嵌入handlebar的object registryhelper时,返回的[object SVGSVGElement]不是html D3图形与把手注册表辅助程序 车把模板 Handlebar显示svg对象的toString值 使用html方法获取svg的html表示形式,请参见 然后使用handlebar.SafeString指示handlebar不转义HTML,类似这样:返回new handlebar.SafeStringsvg.HTML 但

我试图将d3图形嵌入handlebar模板,但当我嵌入handlebar的object registryhelper时,返回的[object SVGSVGElement]不是html

D3图形与把手注册表辅助程序

车把模板


Handlebar显示svg对象的toString值

使用html方法获取svg的html表示形式,请参见

然后使用handlebar.SafeString指示handlebar不转义HTML,类似这样:返回new handlebar.SafeStringsvg.HTML

但在这样做之前,请考虑您的示例中的一些问题:

您使用的是d3.select,这意味着从DOM中选择一个元素。然后直接影响DOM中的元素。不是像函数一样工作,可能您要做的是在内存中创建p元素。或者,您也可以在不创建Handlebar辅助对象的情况下解决使用DOM的问题

一个小问题:将var添加到svg,否则将使用全局变量


请问你最终是如何解决这个问题的?
 Handlebars.registerHelper('list', function() {
 svg = d3.select('p').append("svg").attr("width",w).attr("height",h);
 var rect1 =svg.append("rect").attr("x",0).attr("y",3*h/4).
 attr("width",w).attr("height",rect_1_h).style("fill",rect_1_color);
 return svg;
 });
{{#each objects}}
 <tr>
 <td><p>{{#list}}{{/list}}</p></td>
 </tr>
 {{/each}}