2016-08-01 3 views
0

Angenommen, ich habe das folgende Szenario. Ich habe eine Seite voller Beiträge. Für jeden Post habe ich eine Schaltfläche, die durch eine Ajax-Anfrage einen Punkt zur Variablen des Modells hinzufügt. Ich möchte, dass der Benutzer auf diese Schaltfläche klickt, den Punkt hinzufügt, die Schaltfläche mithilfe von jQuery aus dem DOM löscht und diese Entfernung in der gesamten Sitzung persistent macht. Eine Aktualisierung führt also nicht dazu, dass die Schaltfläche erneut angezeigt wird.Einmaliges Klicken und Löschen der Tastenstatus persistance

Mein Problem ist der letzte Teil, so dass diese Schaltfläche "entfernt bleiben". Ich weiß, dass http staatenlos ist, und ich muss den Status irgendwo pflegen, also habe ich darüber nachgedacht, ein Feld in der Datenbank hinzuzufügen, indem ich localstorage/locensession oder django session verwende.

Welche Methode wäre am besten geeignet? Gibt es andere Möglichkeiten?

Vielen Dank für Ihre Zeit und bitte sagen Sie mir, wenn ich ähnliche Frage verpasst haben könnte und ich werde diese sofort löschen.

+0

diese Frage ist ein wenig vage. Es gibt praktisch unbegrenzte Möglichkeiten, einen Ansichtszustand zu speichern – stackoverfloweth

+0

ja, was @godmode sagte. So wie es aussieht, ist diese Frage nicht zu beantworten, da sie sowohl auf Meinungen als auch zu weit gefasst ist. Bitte werfen Sie einen Blick auf [Wie zu fragen] (http://stackoverflow.com/help/how-to-ask) – Ares

+0

, wenn alles, was Sie speichern, ist, ob eine Schaltfläche bereits angeklickt wurde und daher nicht aktiviert sein sollte die Seite würde ich 'JSON.stringify' und Objekt verwenden und es in' sessionStorage' speichern. Dann auf Seite laden 'JSON.parse (sessionStorage.viewState)' – stackoverfloweth

Antwort

0

Hier ist eine Option, obwohl ich nicht behaupte, es ist das Beste!

die JavaScript-Bibliothek simplestorage für Cross-Browser-Kompatibilität verwenden: https://github.com/andris9/simpleStorage

jedes Ihrer Tasten Geben Sie eine eindeutige ID und die gleiche Klasse, zB:

<button id="points_123" class="add_points">Add Point</button> 

Dann in Ihrem javascript: // machen Aufzeichnung der Schaltflächen geklickt $ ("add_points "). auf (" Klick", function() {

 simpleStorage.set(this.id, 1); 

    }); 

    // when loading page, hide buttons already clicked 
    // (even to hide everything by default and then show ones not clicked) 
    $(".add_points").each(function() { 
     var clicked = simpleStorage.get(this.id); 
     if (clicked > 0) { 
     $(this).hide(); 
     } 

    }); 

Fiddle hier: https://jsfiddle.net/phoebebright/73bv7b6r/

+0

Vielen Dank für Ihre Antwort! Dies ist die Methode, die ich ausgewählt habe, außer dass standardmäßig alles ausgeblendet wird und dann die nicht angeklickten Schaltflächen angezeigt werden. –