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% 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.
Wenn Sie so vorgehen, wird auf Ihrer Konsole "Erhöht", "Erhöht", "Verringert" angezeigt.
Schauen Sie sich einfach previousAttributes()
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
Was passiert, wenn Sie nach dem Anhören des Änderungsereignisses ein eigenes benutzerdefiniertes Ereignis auslösen?
%Vor%Tags und Links javascript backbone.js events backbone-events