我正在使用Node + Express.js。我的一条路线呈现了Handlebars模板及其上下文。相关部分:
my_data = JSON.parse(body);
response.render( 'activity', my_data);
我的问题:在activity.hbs
模板中,如何使用D3从my_data
JSON对象创建绘图。在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>
我在reading this question之后添加了助手。当我尝试渲染视图时,它会出现错误:
Missing helper: 'json' at Object.<anonymous>
使用Helper正确的方法来解决这个问题吗?如何让D3读取我的上下文对象?
答案 0 :(得分:1)
我认为问题出在你的帮助器定义中,基本上你是在错误的地方定义帮助器。 要定义帮助程序,根据express3-handlebars的文档,您必须在明确的应用程序代码中注册它:
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');