2016-06-08 21 views
0

Ich habe die Ideen von AngularJS - How to make a stop watch starting from 00:00:00 format genommen und müssen den Timer in der Lage sein, eine Stop-Methode haben, gehen Sie zu der Eltern-Direktive für eine Schaltfläche, die in der übergeordneten Vorlage ist.Angular Direktive zu Direktive Kommunikation für Timer

<parent-container> 
    <timer-container /> 
    <button ng-click="??.stopTimer()">Stop</button> 
</parent-container> 

Wenn es ein Verfahren, in dem Timer-Container ausgeführt wird, um den Timer zu stoppen, wie ich den übergeordneten Container und Timer-Container zur Interaktion bekommt, so dass, wenn die Schaltfläche geklickt wird, wird die stoptimer-Methode aufgerufen werden?

+0

Schauen Sie in $ scope.emit http://stackoverflow.com/questions/14502006/working-with-scope-emit-and-on –

+0

@MattyM Also emittiere ich vom Timer oder ich sende vom Elternteil wenn Die Schaltfläche wird geklickt? – pertrai1

+0

Wenn das Ereignis im untergeordneten Element auftritt und Sie das übergeordnete Element informieren müssen, verwenden Sie emit. Wenn das Ereignis im übergeordneten Element auftritt und Sie das Kind informieren müssen, verwenden Sie Broadcast. Wenn zwischen den beiden Bereichen keine direkte Beziehung besteht, können Sie $ rootScope in beide Controller injizieren. –

Antwort

2

Schauen Sie sich die Funktionen $emit und $broadcast an. $ emit sendet ein Ereignis an die Hierarchie und $ broadcast sendet das Ereignis in die Hierarchie. Sie können einen Listener mithilfe der Funktion $on hinzufügen.

Wenn zwischen den beiden Bereichen keine direkte Beziehung besteht, können Sie $ rootScope in beide Controller injizieren und das Ereignis dort behandeln.

Für ein vollständigeres Beispiel, überprüfen Sie die Antwort, die ich in meinem Kommentar verlinkt habe.

Verwandte Themen