Handlebars.js analizza object invece di

Uso i modelli Handlebars e i dati JSON sono già rappresentati in [Oggetto object], come posso analizzare questi dati al di fuori del Handlebars? Ad esempio, sto cercando di popolare una variabile JavaScript nella pagina tramite un tag manubrio, ma questo non funziona.

Eventuali suggerimenti? Grazie!

MODIFICARE:

Per chiarire, sto usando ExpressJS w / Handlebars per il template. Nel mio percorso, ho questo:

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

Quindi nel mio modello index.hbs, ora ho un object {{user}} . Posso usare {{#each}} per iterare bene l’object. Tuttavia, sto usando anche Backbonejs e voglio passare questi dati a una vista, come questa:

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

Il problema è che {{user}} mostra semplicemente [Object object] nell’origine se lo metto in console.log. Ricevo un errore, ‘Unexpected Identifier’.

Quando si esegue l’output di {{user}} , Handlebars recupererà innanzitutto il valore .toString() user . Per Object semplici, il risultato predefinito di questo è "[object Object]" che stai vedendo.

Per ottenere qualcosa di più utile, vuoi mostrare una proprietà specifica dell’object:

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

Oppure, puoi usare / definire un helper per formattare l’object in modo diverso:

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

Puoi semplicemente stringificare il JSON:

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

Quindi nel modello stampa da:

 {{{user.stringify}}}; 

Sto usando il template sul lato server nel nodo-js, ma questo può essere applicato anche sul lato client. Registro JSON helper di Jonathan nel nodo. Nel mio gestore, aggiungo contesto (come addressBook) tramite res.locals. Quindi posso memorizzare la variabile di contesto lato client come segue:

  

Nota i tripli riccioli (come indicato da Jim Liu ).

Stai tentando di passare la syntax dei template {{ }} all’interno di un object JSON che non è valido.

Potrebbe essere necessario farlo invece:

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