2013-07-19 10 views
6

In Ember.js, gli eventi che non sono gestiti nel controller propagano la catena del router alla rotta dell'applicazione (vedere http://emberjs.com/guides/views/handling-events/ per ulteriori dettagli).Ember.js - Propagazione evento sulla catena controller/router

C'è un modo per definire un gestore di eventi nel controller che consente all'evento di continuare a propagarsi al router?

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

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

C'è un modo per il gestore myEvent in CarsController per impostare la sua variabile di stato interno, ma anche dei calci l'evento a monte della catena al percorso di applicazione? Sono a conoscenza di questo:

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

ma utilizza interni di Ember. Speravo ci fosse un modo più standard per farlo.

risposta

6

Un modo per raggiungere questo obiettivo potrebbe essere:

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

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

lavoro demo.

Spero che aiuti.

+0

Non funziona (provato con Ember.js 1.0.0-rc.6). Mi chiedevo se fosse anche questo, quindi ho provato a restituire true e false ma nessuno dei due ha funzionato. – kleinsch

+0

@kleinsch, ho modificato la mia risposta, mi dispiace per l'errore – intuitivepixel

+0

@kleinsch adde anche una demo jsbin: http://jsbin.com/oduhom/3/edit che invia l'evento al controller dell'applicazione dovrebbe funzionare – intuitivepixel