2016-07-13 5 views
1

Lassen Sie uns sagen, dass ich wie so einen Rückruf auf meinem Rückgrat Modell installiert haben:Wie überprüfe ich das Vorhandensein eines Backone Callbacks?

model.on('some_event',() => { 
    console.log('it happened.'); 
}) 

Gibt es eine Möglichkeit zu überprüfen, dass dieser Rückruf installiert ist? Mein Ziel ist es, den Callback nicht zweimal zu installieren.

+0

Siehe http://stackoverflow.com/questions/14377856/backbone-add-event-listener-only-if-doesnt-already-exist für die Antwort – burnedikt

Antwort

1

Sie können überprüfen, um zu sehen, ob Ihr Modell ein Ereignis registriert hat mit dem folgenden:

if(model._events && model._events['some_event']) { 
    // already registered 
} 

Alternativ, wenn Ihr Ziel mehrmals einer Rückruf Registrierung nur zu verhindern, könnten Sie Ihren on Anruf mit einem voraus off Aufruf:

model.off('some_event').on('some_event',() => { 
    console.log('it happened.'); 
}); 
+0

Dank! Ich habe versucht, zuerst abzusagen und das hat getan, was ich wollte. Das scheint ein bisschen sauberer zu sein als das Überprüfen von Ereignissen. – matthewatabet

+1

@matthewatabet Verwenden von Variablen, die mit _ beginnen, werden im Allgemeinen als privat für die Bibliothek betrachtet und Bibliotheksverfasser können sie mit bevorstehenden Aktualisierungen ablehnen. Daher werde ich vorschlagen, mit dem zweiten Ansatz fortzufahren. –

+0

@nikhilmehta - Wenn Sie meinen Kommentar sorgfältig lesen, werden Sie bemerken, dass ich _events nicht benutzt habe. Vielen Dank! – matthewatabet

Verwandte Themen