2016-04-19 8 views
0

Ich verstehe wahrscheinlich einige der Backbone-Logik nicht und hoffe, dass Sie es mir erklären können.Wie erkennt man, wenn sich das Modell auf der Vorderseite mit Backbone geändert hat?

Wenn ich ein Modell erstelle, ihm eine ID übergebe und es dann hole, markiert Backbone das Modell als geändert (ein Aufruf an changedAttributes() gibt alle Objektattribute zurück).

Wenn Sie ein Objektattribut auf der Vorderseite ändern, wird das Modell auch so geändert, dass nur dieses Attribut von changedAttributes() zurückgegeben wird.

Wie unterscheiden Sie also Änderungen auf der Vorderseite (und so, nicht beibehalten) und Änderungen, die vom Server kommt? (Gibt es bestimmte Ereignisse?)

Der Grund warum ich das frage ist, dass ich mein Modell speichern möchte, mal zu Zeiten, wenn es Änderungen an der Vorderseite gibt oder wenn der Benutzer aufhört.

[Bearbeiten] Mein Szenario ist (I mit kantigem arbeiten):

Die URL meiner Seite des Formulars ist: Objekt/# /: id

Meine Seite für ein Editor ist das Objekt (einige Eingaben).

Wenn sich die ID in der URL ändert, hole ich das entsprechende Objekt vom Server. Aber wenn es schon etwas gibt (wie wenn der Benutzer die ID manuell ändert), muss ich zuerst speichern, was an dem Objekt gemacht wurde.

+0

Dokumentation sagt "* Attribute des Modells, die seit dem letzten Satz geändert haben *" Sie sind also derjenige, der ruft set/interne Methoden auf, die set aufrufen.Wie kann man nicht wissen, ob sich die Modelldaten geändert haben oder nicht? Können Sie ein Beispielszenario geben? –

+0

Ich habe den Beitrag aktualisiert. Ich hoffe, das hilft. Was ich nicht verstehen kann, ist, wann der Zustand des Modells auf "sauber" (oder "unverändert") gesetzt wird, wenn nicht nach einem Abruf. – ValLeNain

+0

Vielleicht, wenn Sie es zuerst erstellt haben, bis Sie den allerersten Satz machen. Du benutzt also eckiges + Rückgrat ... Das ist verrückt ... Warum tust du das? Ich bezweifle, dass das gut enden wird ... jedenfalls viel Glück ... –

Antwort

2

In Backbone gibt es kein echtes Tracking von Änderungen an Modell/Sammlung, das Ihnen sagt, was oder ob sich etwas geändert hat. Du musst das selbst machen.

Sie können natürlich die Änderungen der aktuellen Änderungsschleife überprüfen. In einem Event-Handler verwenden Sie also zB model.on("change",() => ...). Möglicherweise möchten Sie eine Handler-Funktion implementieren, die die Änderung verfolgt und möglicherweise nach dem Speichern auf dem Server zurücksetzen

Verwandte Themen