2013-07-19 11 views
6

In Ember.js werden Ereignisse, die nicht im Controller behandelt werden, über die Router-Kette zur Anwendungsroute weitergeleitet (weitere Informationen finden Sie unter http://emberjs.com/guides/views/handling-events/).Ember.js - Weiterleiten des Ereignisses über die Controller-/Router-Kette

Gibt es eine Möglichkeit, einen Event-Handler im Controller zu definieren, der es dem Ereignis ermöglicht, sich weiterhin zum Router zu verbreiten?

App.SampleController = Ember.ObjectController.extend({ 
    myEvent: function(obj) { 
    this.set('aVariable', true); 
    } 
}); 

App.ApplicationRoute = Ember.Route.extend({ 
    events: { 
    myEvent: function(obj) { 
     this.transitionTo('something'); 
    } 
    } 
}); 

Gibt es eine Möglichkeit für den myEvent Handler in CarsController seine internen Zustandsvariablen zu setzen, sondern auch das Ereignis die Kette zur Anwendung Route aufwirbeln? Ich bin mir dessen bewusst:

App.__container__.lookup('router:main').send('myEvent', obj); 

aber es verwendet Ember Interna. Ich hatte gehofft, dass es einen Standardweg gibt.

Antwort

6

Eine Möglichkeit, dies zu erreichen, könnte sein:

App.SampleController = Ember.ObjectController.extend({ 
    needs: 'application', 
    myEvent: function(obj) { 
    this.set('aVariable', true); 

    this.get('controllers.application').send('myEvent'); 
    } 
}); 

Arbeiten demo.

Ich hoffe, es hilft.

+0

Funktioniert nicht (versucht mit Ember.js 1.0.0-rc.6). Ich fragte mich, ob das auch so sein könnte, also versuchte ich, wahr und falsch zurückzukehren, aber keiner arbeitete. – kleinsch

+0

@kleinsch, bearbeitet meine Antwort, sorry für den Fehler – intuitivepixel

+0

@kleinsch adde auch eine Demo jsbin: http://jsbin.com/oduhom/3/edit Senden der Veranstaltung an die Anwendung Controller sollte funktionieren – intuitivepixel

Verwandte Themen