首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >需要Handlebars.js来呈现对象数据,而不是"[Object object]“

需要Handlebars.js来呈现对象数据,而不是"[Object object]“
EN

Stack Overflow用户
提问于 2012-04-20 00:29:51
回答 6查看 103.3K关注 0票数 82

我正在使用Handlebar模板,而JSON数据已经在object对象中表示,我如何在Handlebar之外解析这些数据?例如,我试图通过handlebars标记填充页面上的JavaScript变量,但这不起作用。

有什么建议吗?谢谢!

编辑:

为了清楚起见,我使用ExpressJS w/ Handlebar来做模板。在我的路线中,我有:

代码语言:javascript
复制
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],我得到了一个错误,‘意外标识符’。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-04-20 01:13:11

当输出{{user}}时,Handlebar将首先检索user.toString()值。对于普通的Objects,即您看到的default result of this is the "[object Object]"

要获得更有用的信息,您可能希望显示对象的特定属性:

代码语言:javascript
复制
{{user.id}}
{{user.name}}

或者,您可以使用/定义帮助器以不同的方式设置对象的格式:

代码语言:javascript
复制
Handlebars.registerHelper('json', function(context) {
    return JSON.stringify(context);
});
代码语言:javascript
复制
myView = new myView({
    user : {{{json user}}} // note triple brackets to disable HTML encoding
});
票数 178
EN

Stack Overflow用户

发布于 2015-02-14 03:44:24

我在node-js中使用服务器端模板,但这也可能适用于客户端。我在node中注册了Jonathan的json helper,在我的handler中,通过res.locals添加context (如addressBook),然后我可以将context变量client存储如下:

代码语言:javascript
复制
<script>
  {{#if addressBook}}
  console.log("addressBook:", {{{json addressBook}}});
  window.addressBook = {{{json addressBook}}};
  {{/if}}
</script>

请注意三重卷曲(如Jim Liu所指出的)。

票数 6
EN

Stack Overflow用户

发布于 2012-04-20 01:08:14

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

您可能需要这样做:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10232574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档