Überschreiben eines Backbone-Models Change Event

8

Ich denke, was ich tun möchte, ist ziemlich einfach, ich weiß einfach nicht, wie ich es machen soll. Ich möchte mein eigenes Ereignis auslösen, wenn eines meiner Modellattribute Änderungen zum Zweck der Übergabe einiger Daten an den Ereignishandler (ob die Änderung eine Erhöhung oder Verringerung des Werts war) ändert.

Grundsätzlich möchte ich, dass mein Handler dies in der Ansicht tut

%Vor%     
Matthew 24.02.2012, 23:29
quelle

3 Antworten

12

Hier geht's: Sie hören grundsätzlich nach change:myvar . Wenn eine Änderung auftritt, verwenden Sie das previous() des Modells, um den alten Wert zu erhalten. Abhängig davon, ob es erhöht oder verringert wird, feuern Sie das entsprechende Ereignis ab. Sie können diese Ereignisse wie in initialize() gezeigt anhören.

%Vor%

Wenn Sie so vorgehen, wird auf Ihrer Konsole "Erhöht", "Erhöht", "Verringert" angezeigt.

    
ggozad 25.02.2012, 11:58
quelle
2

Schauen Sie sich einfach previousAttributes()

an

Sie können dann vergleichen:

%Vor%

Wenn Sie das in Ihrem change Event-Handler verwenden, sind Sie fertig. Keine Notwendigkeit für einen benutzerdefinierten Trigger oder eine Tonne Code.

BEARBEITEN

Dies ist von meinem Projekt Backbone.Validators und wie ich die Liste aller Attribute erhalte, die sich während der Validierung geändert haben Schritt:

%Vor%

Dies erfordert Underscore 1.3.1, weil es _.has verwendet. Wenn Sie nicht upgraden können, ist das eine einfache Sache, aber zu ersetzen. In Ihrem Fall würden Sie this.previousAttributes() und this.attributes

übergeben     
tkone 25.02.2012 12:03
quelle
0

Was passiert, wenn Sie nach dem Anhören des Änderungsereignisses ein eigenes benutzerdefiniertes Ereignis auslösen?

%Vor%     
jcreamer898 25.02.2012 05:42
quelle