2014-12-26 5 views
0

У меня есть приложение, сделанное в Кордове с использованием рамки Ember.Как загрузить пользовательское местоположение в Cordova + Ember при нажатии на системное уведомление?

Когда я получаю системное уведомление, я хочу открыть пользовательское местоположение на основе идентификатора, которое отправляет мне уведомление. Уведомление вызывает метод из системы маршрута/контроллера Ember.

Как я могу вызвать маршрутизатор ember для загрузки пользовательского местоположения на основе идентификатора уведомления, если метод не находится внутри управляемого кода Ember?

С уважением.

ответ

1

Вы можете проверить модуль Ember.Instrumentation, который может использоваться для таких сценариев.

http://emberjs.com/api/classes/Ember.Instrumentation.html

Чтобы отправить событие из-за пределов Эмбер:

Ember.Instrumentation.instrument("eventGroup.notificationOccured", {id: 'id_which_you_got_from_notification'}); 

Чтобы подписаться на событие внутри Ember кода:

Ember.Instrumentation.subscribe("eventGroup.notificationOccured", { 
     before: function(id, timestamp, payload) { 
     // Here you can do routing 
     }, 
     after: function() {} 
}); 

subscribe может быть внутри Ember App кодовую где вы можете transitionTo маршрут в зависимости от идентификатора.

Возможно, вы можете добавить фрагмент кода подписки в свой IndexRoute или внутри любого метода контроллера, который уже выполнялся бы всякий раз, когда приходит уведомление.

В случае, если вы хотите поместить код в контроллер, то перенаправление может произойти через controller.transitionToRoute(routeName);

+0

Это не работает для меня. – Mou

+0

Попробуйте образец кода, который я разместил в ответе. – Jay

+0

Как я могу маршрутизировать до метода? this.transitionTo? Где я должен установить подписку? – Mou

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