Friday, May 10, 2024
 Popular · Latest · Hot · Upcoming
94
rated 0 times [  98] [ 4]  / answers: 1 / hits: 120786  / 12 Years ago, thu, april 19, 2012, 12:00:00

I'm using Handlebars templates and JSON data is already represented in [Object object], how do I parse this data outside of the Handlebars? For example, I'm trying to populate a JavaScript variable on the page through a handlebars tag, but this doesn't work.


Any suggestions? Thank you!


EDIT:


To clarify, I'm using ExpressJS w/ Handlebars for templating. In my route, I have this:


var user = {}
user = {'id' : 123, 'name' : 'First Name'}

res.render('index', {user : user});

Then in my index.hbs template, I now have a {{user}} object. I can use {{#each}} to iterate through the object just fine. However, I'm also using Backbonejs and I want to pass this data to a View, such as this:


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

The problem is that {{user}} simply shows [Object object] in the source. If I put it in console.log I get an error that says 'Unexpected Identifier'.


More From » json

 Answers
1

When outputting {{user}}, Handlebars will first retrieve the user's .toString() value. For plain Objects, the default result of this is the [object Object] you're seeing.



To get something more useful, you'll either want to display a specific property of the object:



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


Or, you can use/define a helper to format the object differently:



Handlebars.registerHelper('json', function(context) {
return JSON.stringify(context);
});




myView = new myView({
user : {{{json user}}} // note triple brackets to disable HTML encoding
});

[#86128] Wednesday, April 18, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
maximusbradforde

Total Points: 594
Total Questions: 106
Total Answers: 82

Location: Tuvalu
Member since Sat, Feb 11, 2023
1 Year ago
;