Gibt es eine Faustregel, um zu entscheiden, wann Trigger oder triggerMethod in Backbone.Marionette verwendet werden soll?

8

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.

    
Lorenzo B 10.01.2014, 18:45
quelle

2 Antworten

11

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

aufgerufen wird %Vor%

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:

%Vor%

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):

  • Testen Sie, dass das Ereignis "form: data: invalid" ausgelöst wird, wenn ein Benutzer falsche Informationen eingibt
  • testen, dass, wenn das Ereignis "form: data: invalid" ausgelöst wird, der Fehler protokolliert wird
  • usw.
David Sulc 11.01.2014, 17:16
quelle
7

trigger(name)

  • Teil von Backbone.js
  • Löst das Ereignis unter Verwendung des in
  • übergebenen Namens aus

triggerMethod(name)

  • Teil von Marionnete.js
  • Hat alles trigger(name)
  • ?
  • Ruft auch Methoden auf, die eine vordefinierte Namenskonvention verwenden.

    z. triggerMethod('foo') ruft onFoo()

    auf

    z. triggerMethod('foo:bar') ruft onFooBar()

    auf
kay.one 24.01.2014 00:02
quelle