Handlebars.jsparsing对象而不是

我正在使用Handlebars模板,并且JSON数据已经在[Object object]中表示出来了,我怎样才能在Handlebars之外parsing这些数据呢? 例如,我试图通过一个句柄标签在页面上填充一个JavaScriptvariables,但这是行不通的。

有什么build议么? 谢谢!

编辑:

为了澄清,我使用ExpressJS w / Handlebars模板。 在我的路线上,我有这样的:

var user = {} user = {'id' : 123, 'name' : 'First Name'} res.render('index', {user : user}); 

然后在我的index.hbs模板中,我现在有一个{{user}}对象。 我可以使用{{#each}}遍历对象。 不过,我也使用Backbonejs,我想将这些数据传递给一个View,例如:

myView = new myView({user : {{user}});

问题是,如果我把它放在console.log中, {{user}}只是在源代码中显示[Object object] ,我得到一个错误'Unexpected Identifier'。

输出{{user}} ,把手将首先检索user.toString()值。 对于普通的Object , 默认的结果是你看到的"[object Object]"

为了得到更有用的东西,你要么显示对象的特定属性:

 {{user.id}} {{user.name}} 

或者,您可以使用/定义一个帮助器来以不同的方式格式化对象:

 Handlebars.registerHelper('json', function(context) { return JSON.stringify(context); }); 
 myView = new myView({ user : {{{json user}}} // note triple brackets to disable HTML encoding }); 

你可以简单的JSON string化

 var user = {} user = {'id' : 123, 'name' : 'First Name'}; // for print user.stringify = JSON.stringify(user); 

然后在模板中打印:

 {{{user.stringify}}}; 

我在node-js中使用服务器端模板,但是这也可能适用于客户端。 我注册了Jonathan的json帮手。 在我的处理程序中,我通过res.locals添加上下文(如addressBook)。 然后我可以存储上下文variables客户端,如下所示:

 <script> {{#if addressBook}} console.log("addressBook:", {{{json addressBook}}}); window.addressBook = {{{json addressBook}}}; {{/if}} </script> 

注意三重曲线(正如Jim Liu所指出的那样)。

您正试图在无效的JSON对象内传递模板语法{{ }}

您可能需要这样做:

myView = new myView({ user : user });