2015-03-20 5 views
0

Как вы можете обнаружить изменения маршрута (# или popstate) вне приложения ember? Я пробовал это, но не везло: они никогда не срабатывалаКак вы можете прослушивать изменения маршрута?

window.onhashchange = function locationHashChanged() { 
     console.log(location.hash); 
    }; 
    window.addEventListener('popstate', function locationHashChanged(e) { 
     console.log(e.location); 
    }); 
+0

Что вы подразумеваете под «вне приложения ember»? Приложение Ember - это весь мир. Что вы планируете делать, когда обнаруживаете изменение маршрута? –

+0

@torazaburo Я просто хочу название нового маршрута. Это нормально, чтобы обнаружить это в приложении ember: – SuperUberDuper

ответ

2

Я не 100% уверен, что если есть хороший способ сделать это в общественном API. Но если вы в порядке с небольшим обманом, вы можете использовать свойства, описанные here.

var applicationController = App.__container__.lookup('controller:application'); 
applicationController.addObserver('currentRouteName', function() { 
    var currentRouteName = applicationController.get('currentRouteName'); 
    // ... 
}); 
+0

Могу ли я сделать это с помощью компонента, а не контроллера? Я говорю это так, как хочу сделать это в аддоне с компонентом. Я просто хочу, чтобы эта функция включалась в каждом случае. – SuperUberDuper

+0

Уверен, но нет причин не просто поместить это прямо в контроллер приложения, чтобы избежать поиска в контейнере, а просто определить обычный метод наблюдателя на 'currentRouteName', который вы предлагаете. –

+0

currentRouteName и currentPath находятся только на контроллере приложения, http://emberjs.com/guides/understanding-ember/debugging/#toc_get-current-route-name-path – Kingpin2k

Смежные вопросы