2017-01-31 3 views
2

Ich benutze Mops und ich möchte eine Variable an das Front-End für Informationen übergeben, aber wenn ich versuche, dass es wie ein Text passieren.Wie ein Objekt von Mops an Front-End übergeben Javascript

So mache ich das.

Code Controller:

res.render('view/edit', { 
    title: 'Title', 
    sub:true, 
    data: variableObject 
}); 

Dies ist der Code in der gerenderte Ansicht:

script(type='text/javascript'). 
    var x = "#{data}" 
    console.log(x); 

Und das ist das Ergebnis des Protokolls

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] 

I Zugang KONNTE NICHT zu dem Objekt, weil es Text gibt, gibt es eine Möglichkeit, das Objekt wie ein Objekt zu übergeben?

Antwort

1

In diesem Fall habe ich benutzten:

var x = "#{ JSON.stringify(y) }" 
    console.log(JSON.parse(x.replace(/"/g,'"'))); 

ich bin nicht sicher, ob dies die beste Praxis ist.

+1

Wie in der Antwort von dNitro, wird mit '! {JSON.stringify (y)}' das Problem der Escape-Funktion entfernt. – Matt

+0

Das ist wirklich eine gute Antwort –

2

Erste stringify Ihr Objekt mit JSON.stringify:

res.render('view/edit', { 
    title: 'Title', 
    sub: true, 
    data: JSON.stringify(variableObject) 
}); 

Dann String Interpolation, Unescaped!{data}

script(type='text/javascript'). 
    var x = !{data} 
    console.log(x); 


Oder einfach alles einmal tun verwenden, in der Vorlage:

script(type='text/javascript'). 
    var x = !{JSON.stringify(data)} 
    console.log(x); 

(ein großes Lob an @ Matt, Dank)

+0

Wenn die Zeichenfolge '' enthält, wird dies Probleme verursachen, da der Browser denkt, dass es die schließende Registerkarte der Öffnung '