"Kommentare laden..."

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • "Kommentare laden..."

    Hey,
    ich habe ein kleines Dashboard geschrieben, was ich nun noch weiter modifizieren möchte.

    Da es ja durchaus sein kann, dass ein Beitrag von Usern "zugespammt" wird, möchte ich die Funktion "Kommentare laden" einbauen (siehe Anhang 1). Heißt also, wenn derjenige auf den Link dazu klickt soll ein AJAX Request abgefeuert werden und die Kommentare zu dem Beitrag sollen erscheinen.

    Ich möchte nur einmal theoretisch wissen, wie das abläuft, ich stelle mir das wie folgt vor:
    1. Mausklick auf Link (mit onClick-Event)
    2. AJAX Request
    3. AJAX Request liefert Array mit Kommentar-Objekten zurück (im JSON Format natürlich)
    4. foreach mit JavaScript, Array durchschleifen und dann in den jeweiligen Div-Container "appenden"

    Von Punkt 1 bis 3 ist mir alles klar. Prinzipiell auch beim 4. Nur stellt sich mir folgende Frage: Ich habe für die Kommentare ein Template (eine eigene .blade.php - Datei (ich arbeite mit Laravel)) dem ein Kommentarobjekt übergeben kann und er liefert mir dann das fertige "Kommentar" zurück. Was ich damit meine seht ihr in Anhang 2. Heißt also, ich baue diese gesamte Kommentarstruktur rekursiv auf, was ich recht angenehm finde und was ja durchaus Sinn macht.

    Ich habe nun aber keine Lust, weil ichs einfach ziemlich eklig finde, nachdem ich das Array mit Objekten bekomme, diese Objekte zu durchschleifen und dann bspw. wie folgt zu "appenden":

    Quellcode

    1. '<div class="bliblablub"><img src="hiwqehei.png" /><div jiweeiwjqw></div><div ...></div></div><div abcdef...>'+value.text+'</div>'

    Also so ein JavaScript/HTML Gemisch machen zu müssen. Habe ich ja prinzipiell nichts sooo groß dagegen, aber ich halte es für absolut unnötig und unschön.

    Wisst ihr, ob es da nicht schönere Lösungen gibt?

    Ich hoffe, ihr versteht, was ich meine... gar nicht so einfach zu erklären. :huh:

    Liebe Grüße,
    Vincent
    "Das müsste jetzt funktionieren..."

    ---
    Mit freundlichen Grüßen,
    Vincent Petritz
  • Moinmoin,

    wenn ich dich richtig versteh, brauchst du einfach eine Template-Engine, um das unschöne Mischen zu verhindern. Spontan fällt mir die Utility Template von UnderscoreJS (wird von BackboneJS verwendet) ein: underscorejs.org/#template

    Beispiel:

    Quellcode

    1. <script type="text/template" id="tpl-comment">
    2. <div class="comment">
    3. <p>User: <%= name %> </p>
    4. <p>Comment: <%= comment %> </p>
    5. </div>
    6. </script>
    7. .
    8. .
    9. .
    10. <script type="text/javascript">
    11. $(document).ready(function() {
    12. /*
    13. Ajax Gedöhns....
    14. */
    15. // precompilen
    16. var tpl = _.template( $('script#tpl-comment').html() );
    17. // Objektvariablen entsprechen den Variablen im Template
    18. $.each(jsonString, function(index, obj) {
    19. $('div#comment-container').append( tpl(obj) );
    20. });
    21. });
    22. </script>
    Alles anzeigen


    Siehe: underscorejs.org/

    Gruß
    ActiveRecord

    easy

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Active Record ()