Ich möchte Daten von Controller zu JavaScript durch eingebettete Daten direkt im Blick übergeben. (So gibt es keine weiteren Anfragen werden.)Übergeben von Daten vom Controller zu JavaScript in GSP
Meine erste Lösung ist as JSON
in GSP wie folgt zu verwenden:
<script>
var data = ${invoice as JSON};
</script>
Ich glaube nicht, dass es gute Idee, da ich verwenden (Grails 2.2
)grails.views.default.codec = "none"
oder (Grails 2,3)
grails {
views {
gsp {
codecs {
expression = 'none'
}
}
}
}
Nun fand ich, dass ich etwas schaffen kann TagLib wie folgt aus:
def json = { attrs, body ->
out << (attrs.model as JSON)
}
Und ich kann folgenden Code in GSP verwenden:
<script>
var data = <g:json model="${invoice}" />;
</script>
nun die Frage. Ist die Verwendung von Taglib die beste Vorgehensweise? Wenn nicht, bitte geben Sie mir die beste Lösung.
Wie wäre es mit dem Senden der JSON-String vom Controller an die Ansicht, und mit '$ {json.encodeAsJavaScript()}'? –
encodeAsJavaScript() gibt mir: 'var data = \ u007b \ u0022key1 \ u0022: \ u0022val1 \ u0022 \ u002c \ u0022key2 \ u0022: 3.14 \ u007d' – Meam
Ach ja, in diesem Fall brauchst du die Rohdaten. '$ {roh (json)}' –