playframework call Model Methode aus Sicht Javascript
-
27-10-2019 - |
Frage
Wie im Spiel-Tutorial für das Tags-Set (Rohfeld anpassen);Ich möchte eine neue Funktionalität hinzufügen, wenn der Benutzer ein Tag auswählt. Dann sollte Javascript den aktuellen Benutzer (models.user) abrufen und eine Methode user.doSomething () aufrufen.Ist dies in einem benutzerdefinierten CRUD-Feld möglich?(wie im Tutorial für Yabe-Tags?).
Gibt es eine Möglichkeit, ein benutzerdefiniertes CRUD-Feld als Liste von Kontrollkästchen zu erstellen. Wenn der Benutzer einige Kontrollkästchen aktiviert, sollte ich Code (möglicherweise Javascript) schreiben, der den aktuell angemeldeten Benutzer erhält, und dann eine Methode für dieses Benutzermodell aufrufen.
danke.
Lösung
Hier ist das Beispiel aus dem Spiel-Tutorial (Rohfeld anpassen).Ich nehme an, dass Sie eine Aktion ausführen möchten, wenn auf ein Tag geklickt wird.Dies kann einfach wie unten gezeigt erfolgen
#{crud.form}
#{crud.custom 'tags'}
<label for="tags">
&{'tags'}
</label>
(...)
<div class="tags-list">
#{list items:models.Tag.findAll(), as:'tag'}
<span id="${tag.id}" onclick="toggle(this)" class="tag ${object.tags.contains(tag) ? 'selected' : ''}">
/**** ADD An ACTION CALL HERE ******/
<a href="@{Application.getConnected().doSomething()}">${tag}</a>
/**** END *****/
</span>
<input id="h${tag.id}" type="hidden" name="${fieldName}"
value="${object.tags.contains(tag) ? tag.id : ''}" />
#{/list}
</div>
#{/crud.custom}
#{/crud.form}
Sie müssen die Methode getConnected () selbst in Ihrem Controller (möglicherweise Application.java) implementieren.Angenommen, Sie verwenden das sichere Modul , dann ist es so etwas wie
void getConnected(){
if(Security.isConnected()) {
User user = User.find("byEmail", Security.connected()).first();
renderArgs.put("user", user);
}
}