我正在使用Handlebar模板,而JSON数据已经在object对象中表示,我如何在Handlebar之外解析这些数据?例如,我试图通过handlebars标记填充页面上的JavaScript变量,但这不起作用。
有什么建议吗?谢谢!
编辑:
为了清楚起见,我使用ExpressJS w/ Handlebar来做模板。在我的路线中,我有:
var user = {}
user = {'id' : 123, 'name' : 'First Name'}
res.render('index', {user : user});
然后,在我的index.hbs模板中,我现在有了一个{{user}}
对象。我可以使用{{#each}}
很好地遍历对象。但是,我也在使用Backbonejs,我希望将此数据传递给一个视图,如下所示:
myView = new myView({user : {{user}});
问题是,如果我把它放在console.log中,{{user}}
只是在源代码中显示[Object object]
,我得到了一个错误,‘意外标识符’。
发布于 2012-04-20 01:13:11
当输出{{user}}
时,Handlebar将首先检索user
的.toString()
值。对于普通的Object
s,即您看到的default result of this is the "[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
});
发布于 2015-02-14 03:44:24
我在node-js中使用服务器端模板,但这也可能适用于客户端。我在node中注册了Jonathan的json helper,在我的handler中,通过res.locals添加context (如addressBook),然后我可以将context变量client存储如下:
<script>
{{#if addressBook}}
console.log("addressBook:", {{{json addressBook}}});
window.addressBook = {{{json addressBook}}};
{{/if}}
</script>
请注意三重卷曲(如Jim Liu所指出的)。
发布于 2012-04-20 01:08:14
您正试图在无效的JSON对象中传递模板语法{{ }}
。
您可能需要这样做:
myView = new myView({ user : user });
https://stackoverflow.com/questions/10232574
复制相似问题