我有一个使用Ember框架在Cordova中制作的应用程序。
当我收到系统通知时,我想根据通知发送给我的 id 打开一个自定义位置。通知从 Ember 路由/控制器系统调用方法。
如果方法不在 Ember 托管代码中,如何调用 ember 路由器以根据通知 ID 加载自定义位置?
问候。
你可以检查Ember.Instrumentation模块,它可以用于这样的场景。
http://emberjs.com/api/classes/Ember.Instrumentation.html
要从 Ember 外部发送事件,请执行以下操作:
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 代码库中,您可以在其中根据 id transitionTo
路由。
您可以将订阅代码片段放在 IndexRoute 的setupController
中或任何控制器方法中,这些方法会在通知到达时执行。
如果您想将代码放入控制器中,则可以通过controller.transitionToRoute(routeName);
进行重定向