2015-02-10 9 views
5

L'obiettivo è passare da un modello/ViewModel scritto in Scala a JSON non elaborato che può essere riavviato nel modello di vista in modo da evitare di effettuare richieste per i dati JSON dopo il caricamento della pagina.Bootstrapping di dati JSON in modelli Scala PlayFramework

E l'esempio di quello che ho giocato in giro con, ma non ho avuto molta fortuna:

@(todos: play.api.libs.json.JsValue) 
@import play.api.libs.json.Json 

<html> 
    <head>...</head> 
    <body>...</body> 

    <script> 
     var todos = JSON.parse(' @Json.stringify(todos) '); 
    </script> 
</html> 

Fondamentalmente il suo sputare fuori un sacco di testo citato per effetto di:

[{&quot;id&quot;:&quot;:&quot;294858e2-c9eb-4f50-9eac-47b257573d83&quot;}] 

Non ho avuto molta fortuna con Google o i documenti di PlayFramework quindi mi piacerebbe un po 'di aiuto.

+0

Che cosa non funziona in realtà qui? – Mikesname

+1

Per impostazione predefinita, il motore di template indicherà i dati in HTML, quindi prova qualcosa come '@Html (Json.stringify (todos))' per renderlo testuale. Guarda l'output HTML per verificare. Potresti anche aver bisogno di qualificare completamente il tipo 'JsValue' del parametro' todos' come 'play.api.libs.json.JsValue' dato che AFAIK non è un modello di importazione predefinito. – Mikesname

+0

@ Mikesname hai indovinato il problema. E il tuo suggerimento per l'uso di '@ Html' ha funzionato perfettamente. Se puoi inviare il tuo suggerimento come risposta, vado avanti e lo accetto. –

risposta

8

Il motore del modello di riproduzione sfugge a qualsiasi stringa eseguita in HTML, che maneggia completamente il JSON.

Per eseguire l'output letteralmente, fare @Html(Json.stringify(todos)), come descritto here.

Problemi correlati