Javascript EXTJS5 MVVM:从视图控制器获取全局控制器
从全局控制器,我可以很容易地获得对另一个全局控制器的引用Javascript EXTJS5 MVVM:从视图控制器获取全局控制器,javascript,extjs,mvvm,extjs5,Javascript,Extjs,Mvvm,Extjs5,从全局控制器,我可以很容易地获得对另一个全局控制器的引用 this.getController('TargetController'); 但是,在视图控制器的上下文中,如何获取对同一控制器的引用?i、 e: Ext.define('myCoolApp.view.SomeNeatController', { extend: 'Ext.app.ViewController', alias: 'controller.someneat', // this is bound t
this.getController('TargetController');
但是,在视图控制器的上下文中,如何获取对同一控制器的引用?i、 e:
Ext.define('myCoolApp.view.SomeNeatController', {
extend: 'Ext.app.ViewController',
alias: 'controller.someneat',
// this is bound to a button click event, let's say.
onClick: function(button) {
// How to get a reference to a global controller here?
// this.getController('TargetController'); is not defined
// on the view controller....
}
});
也许我遗漏了一些简单的东西,但如果有任何帮助,我将不胜感激 在命名空间上调用getController应该可以:
myCoolApp.app.getController('TargetController');`
在99.99%的情况下,如果您需要在ExtJS5中获取对全局控制器的引用,那么您就做错了。目的是什么?我以为有人会问这个我必须从webservice(GoogleDriveAPI)检索一些数据,我将这个逻辑(以及所有oauth2内容)很好地抽象为一个来自先前ExtJS4项目的控制器。我需要从我在视图控制器中处理的事件开始数据检索。它可能不是100%理想的体系结构,但在我看来,重构工作、测试(和漂亮)的代码以适应设计模式就更不可取了。控制器事件域是这里使用的工具。看我的帖子:而且整洁。我以前没有注意到这一点。ext5.0.0文档中的一个小错误:ext.app.EventDomain类将控制器域列为从ext.app.controller扩展而来的所有类。视图控制器不从Ext.app.Controller扩展(尽管两者共享一个公共Ext.app.BaseController基),但控制器事件域确实侦听从视图控制器触发的事件。无论如何,谢谢你的提示。我也在寻找这个问题的答案,但找不到。这不是一个全球电话吗?在本例中,您的控制器必须知道您有一个myCoolApp和一个TargetController,这使得它非常依赖于这些东西。我不喜欢这个解决方案。我不喜欢首先了解视图控制器中全局控制器的必要性。如果您需要,该应用程序需要重新设计。我在Ext5和Ext6中编写了两个非常大的应用程序,我从来都不需要它。