我怎样才能让D3读取Handlebars上下文对象

我正在使用Node + Express.js。 我的一个路线呈现一个Handlebars模板及其上下文。 相关部分:

my_data = JSON.parse(body); response.render( 'activity', my_data); 

我的问题:在这个activity.hbs模板中,如何使用D3从my_data JSON对象创build一个绘图。 在activity.hbs的相关部分我已经尝试过了

 <script type="text/javascript"> Handlebars.registerHelper('json', function(context) { return JSON.stringify(context); }); var datas = {{json my_data}} d3.select("body") .datum(datas) .enter() #do stuff with data </script> 

看完这个问题后,我加了助手。 当我尝试渲染视图时,它会给出一个错误:

Missing helper: 'json' at Object.<anonymous>

用正确的方式来帮助解决这个问题? 我怎样才能让D3读取我的上下文对象?

我想这个问题是在你的帮手定义中,基本上你是在错误的地方定义帮手。 要定义一个帮助器,基于express3句柄的文档,您必须在快速应用代码中注册它:

 var express = require('express'), exphbs = require('express3-handlebars'), app = express(), hbs; hbs = exphbs.create({ // Specify helpers which are only registered on this instance. helpers: { // Your custom helper here json: function(context) { return JSON.stringify(context); } } }); // Register it app.engine('handlebars', hbs.engine); app.set('view engine', 'handlebars');