我要从我的应用程序中共享一些事件,以便在视图和控制器之间共享。例如,事件:“来自服务器的更新可用”。为此,我可以在控制器中触发Event("updatesAvailable"),但这会使其他组件订阅触发该事件的特定控制器。
我想要的是拥有一个可以保留所有应用程序逻辑事件订阅的单例对象。
目前我发现我可以通过拥有一个共享视图实例并全部订阅它来解决问题。但我想知道是否有一个开箱即用的事件调度程序,它知道应用程序内的所有事件。
我要从我的应用程序中共享一些事件,以便在视图和控制器之间共享。例如,事件:“来自服务器的更新可用”。为此,我可以在控制器中触发Event("updatesAvailable"),但这会使其他组件订阅触发该事件的特定控制器。
我想要的是拥有一个可以保留所有应用程序逻辑事件订阅的单例对象。
目前我发现我可以通过拥有一个共享视图实例并全部订阅它来解决问题。但我想知道是否有一个开箱即用的事件调度程序,它知道应用程序内的所有事件。
据我了解,您想使用模式“事件总线”吗?您可以使用每个 ST2 应用程序中存在的“全局”和单个对象 - Ext.Viewport。至少我在我的应用程序中创建,直到现在没有什么不好。请注意,创建事件处理程序的最佳位置是控制器的 init() 方法。
Ext.define('Myapp.controller.ActivitiesController', {
extend : 'Ext.app.Controller',
requires : [],
config: {
refs: {
myview: 'myview'
}
...
init: function () {
var me = this;
Ext.Viewport.on({
scope: this,
addactivitytype: function (config) {
var myview = me.getMyview(),
record = config.record
...
});
}
});
在另一个控制器(或曾经查看)中,您可以编写
addActivityTypeTap: function (record) {
....
Ext.Viewport.fireEvent('addactivitytype', {
record: record
});
}