2017-04-04 1 views
0

Je suis maintenant avec ember js. J'ai besoin de l'instance de route actuelle dans l'observateur des contrôleurs. J'ai essayé beaucoup de liens et j'ai beaucoup cherché, mais je n'ai toujours pas réussi à obtenir l'instance de route en méthode d'observation. Il y a le code.Impossible d'obtenir l'instance de l'itinéraire actuel dans les observateurs

activeStagesChanged: Ember.observer('activeStages.[]', function() { 
    let self = this; 

    Ember.run.scheduleOnce('afterRender', function() { 
     initCustomScrollbar('#status_timeline_box'); 

     self.handleAppStages(self.get('model'), self.get('currentUser.isConfirmAppStageChange'), 
      Ember.getOwner(self).lookup('controller:application')); 
    }); 
    }) 

Ember.getOwner (auto-) .lookup («contrôleur: application) ce qui est le code I supposant pour renvoyer l'objet d'itinéraire.

+0

Il serait bon de connaître la raison ou le cas d'utilisation derrière l'accès à l'instance de route dans les observateurs, car il pourrait y avoir d'autres alternatives à votre cas d'utilisation. – kumkanillam

+0

ceci est l'application de ruby ​​sur des rails et nous employons la braise comme technologie d'extrémité avant. J'envoie cette route à un callback écrit est simple js pour actualiser l'itinéraire sur une action. – wasipeer

Répondre

1

Vous pouvez définir des actions refreshFromCont dans le fichier d'itinéraire,

actions:{ 
refreshFromCont(){ 
    this.refresh(); 
} 
} 

De observateur à l'intérieur des contrôleurs, vous pouvez appeler this.send('refreshFromCont') Il appellera la route des contrôleurs actuels et la voie mère et dans l'ordre.

+0

Cela fonctionne. Je retourne cela de l'action. est-ce l'approche d'écriture? – wasipeer

+0

@wasipeer Oui, c'est afaik. peut-être que vous pouvez annuler cette réponse jusqu'à ce que d'autres personnes apportent leur précieux feedback ou une approche/réponse différente. – kumkanillam