【发布时间】:2014-07-30 01:26:24
【问题描述】:
从一个全局控制器,我可以很容易地得到另一个全局控制器的引用
this.getController('TargetController');
但是,在视图控制器的上下文中,我怎样才能获得对同一控制器的引用?即:
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....
}
});
可能我缺少一些简单的东西,但我们将不胜感激。
【问题讨论】:
-
在 99.99% 的情况下,如果您需要在 Ext JS 5 中获取对全局控制器的引用,那么您做错了。目的是什么?
-
我以为有人会问这个。 :) 我必须从 web 服务(google drive api)中检索一些数据,并且我将这个逻辑(包含所有 oauth2 的东西)很好地抽象到了以前的 ExtJS4 项目的控制器中。我需要从我在视图控制器中处理的事件中开始数据检索。它可能不是 100% 理想的架构,但在我看来,仅仅为了适应设计模式而重构工作、测试(和漂亮)的代码是更不可取的。
-
控制器事件域是这里使用的工具。查看我的帖子:nohuhu.org/development/controller-events-in-ext-js-4-2 和 nohuhu.org/development/…
-
整洁。这以前不在我的雷达上。 ext 5.0.0 文档中的一个小错误:Ext.app.EventDomain 类将控制器域列为从 Ext.app.Controller 扩展的所有类。视图控制器不从 Ext.app.Controller 扩展,(尽管它们共享一个共同的 Ext.app.BaseController 基础)但控制器事件域确实侦听从视图控制器触发的事件。无论如何,谢谢你的提示。
标签: javascript extjs mvvm extjs5