Ich spiele ein bisschen mit Backbone.js
und Backbone.Marionette
und ich würde gerne wissen, was der Unterschied zwischen trigger
und triggerMethod
ist.
Gibt es insbesondere eine Faustregel, um zu entscheiden, ob die erste oder die zweite verwendet wird?
In meiner Erinnerung sind zum Beispiel Ereignisse nützlich, um zwischen einem DOM-Element und seiner Ansicht zu kommunizieren.
triggerMethod
wird in Marionette verwendet, um verschiedene Komponenten, z.B. Ein Layout ruft die Methode show
für seine untergeordneten Elemente auf (Kinder antworten auf onShow
). Also, für mich ist es dasselbe wie eine direkte Methode darauf anzurufen. Ist das wahr?
Was ist mit trigger
?
Vielen Dank im Voraus.
Es gibt keinen großen Unterschied und es hängt einfach davon ab, was Sie tun möchten ...
trigger
löst ein Ereignis aus triggerMethod
löst ein Ereignis aus AND ruft eine entsprechende Methode entsprechend der Namenskonvention auf (siehe Ссылка ) Wenn Sie nur ein Ereignis auslösen möchten, verwenden Sie natürlich trigger
. Aber mit trigger
erstellen Sie auch eine "home made" triggerMethod-Implementierung: trigger
das Ereignis, dann haben Sie einen Listener, der die gewünschte Funktion aufruft.
Was ist mit triggerMethod
? Wie oben erwähnt, löst es ein Ereignis aus und ruft eine Methode auf. Wenn Sie also nur die Methode aufrufen möchten, müssen Sie triggerMethod
nicht unbedingt verwenden.
Warum sollte man triggerMethod
überhaupt benutzen? Weil es Ihnen "Hooks" gibt, um Funktionalität mit Event-Listenern hinzuzufügen. In meinem Buch über Marionette zum Beispiel gibt es einen triggerMethod
Aufruf in Ссылка , um Fehlermeldungen in einem Formular anzuzeigen. Das Gleiche könnte erreicht werden, indem einfach
Aber wie oben erwähnt, geben triggerMethod
uns einen "Haken" für die spätere Verwendung. Angenommen, ich möchte die Protokollierung von Benutzerfehlern hinzufügen: Ich kann meiner Ansicht einfach einen Listener hinzufügen:
Diese zusätzliche Funktionalität kann hinzugefügt werden, ohne den Rest des Codes zu beeinträchtigen, da wir triggerMethod
anstelle eines direkten Methodenaufrufs verwendet haben. Darüber hinaus wird es später einfacher zu testen sein (kleine Tests mit Single Point of Failure):
trigger(name)
Backbone.js
triggerMethod(name)
Marionnete.js
trigger(name)
Ruft auch Methoden auf, die eine vordefinierte Namenskonvention verwenden.
z. triggerMethod('foo')
ruft onFoo()
z. triggerMethod('foo:bar')
ruft onFooBar()
Tags und Links javascript backbone.js marionette