2013-04-10 21 views
6

Sto passando al nuovo router ember ma ho una domanda molto semplice - come faccio a capire quale percorso sono attualmente? Prima di poter fare qualcosa come App.router.get('currentState'), ma questo non sembra funzionare più come il router non eredita più da StateManagerEmber.js per il percorso corrente

risposta

8

Dai un'occhiata a questo question.

Riepilogo: lo currentState è ora memorizzato nella proprietà currentPath nel tuo ApplicationController. La soluzione è stata accettata all'osservatore questa proprietà di scrivere in una proprietà globale:

App = Em.Application.create({ 
    currentPath: '' 
}); 
ApplicationController : Ember.Controller.extend({ 
    updateCurrentPath: function() { 
     App.set('currentPath', this.get('currentPath')); 
    }.observes('currentPath') 
}); 
+0

Grande, grazie. Mi chiedo se abbiano rimosso di proposito quella funzionalità, però - perché ci fanno fare tutto questo da soli per ottenere il percorso attuale? –

+0

Sry, non lo so. Io stesso non l'ho mai usato a livello di programmazione. L'ho usato solo per scopi di debug. – mavilein

+0

Così ho appena provato questo - sembra funzionare, tranne che non potrei chiamare '' 'set''' su' '' App'''. Tutte le chiamate al set sembravano fallire silenziosamente. Invece l'ho semplicemente impostato direttamente ('' 'App.currentPath = this.get 'currentPath'''') poiché ho solo bisogno di questo per scopi di debug –

6

io probabilmente ottenere fatto saltare per questo, ma dopo un sacco di frustrazione con questo ho deciso di implementare una soluzione veramente brutto.

Il mio caso d'uso stava cercando di ottenere l'ID del post corrente perché stavo inviando una risposta ad esso. Pensate a qualcosa di simile per il nostro percorso attuale:

" ... #/post/12345"

mia soluzione (codice più brutto mai):

var currentId = window.location.hash.split('/')[2]; 
App.Message.createRecord({ 
     content: message, 
     inReplyTo: currentId 
    }).get('transaction').commit(); 
+2

+1 nessuno può biasimarti per aver effettivamente realizzato ciò che volevi, anche se va lungo il modo "brutto". –

1

controller ho potuto ottenere il percorso corrente nome usando il codice qui sotto. Buona fortuna

this.get ("currentRouteName")

Problemi correlati