Class Sencha Touch-如何获取对类实例的引用

Class Sencha Touch-如何获取对类实例的引用,class,sencha-touch,extjs,Class,Sencha Touch,Extjs,单击按钮时,我正在实例化一个类。如何在按钮回调之外获取对此类实例的引用 handler: function() { var formValues = Ext.getCmp('DonateItemForm').getValues(), itemDetails = Ext.create('App.model.ItemDetails', formValues); } 编辑:不使用全局 var itemDetails; //... handler: function() {

单击按钮时,我正在实例化一个类。如何在按钮回调之外获取对此类实例的引用

handler: function() {
    var formValues = Ext.getCmp('DonateItemForm').getValues(),
        itemDetails = Ext.create('App.model.ItemDetails', formValues);
}
编辑:不使用全局

var itemDetails;

//...
handler: function() {
    var formValues = Ext.getCmp('DonateItemForm').getValues();
    itemDetails = Ext.create('App.model.ItemDetails', formValues);
}
//...

只需创建一个全局变量(在处理程序外部),并将其分配到处理程序中,就可以将模型实例存储在管理面板(视图)的控制器中。 但是,如果您没有根据模型视图控制器模式进行编码,则可以将其附加到表单:

Ext.getCmp('DonateItemForm').itemDetails = itemDetails;
但基本思路应该是明确的: 每次要访问模型实例时,只需遍历管理它的对象(表单控制器或表单本身)

[编辑]

要将数据存储在控制器中,首先需要将其发送到该控制器:

基本上,处理程序应该通过向控制器发送消息将数据发送给控制器。消息将包含包含要发送的表单数据的有效负载

handler: function() {
    var formValues = Ext.getCmp('DonateItemForm').getValues();
    var itemDetails = Ext.create('App.model.ItemDetails', formValues);   

    Ext.dispatch({
        controller: "YourController",
        action: 'MethodOnYourController',
        yourDetails: itemDetails
    });
}
“yourDetails”现在将保存您需要的itemDetails。当然,您可以为它命名任何您想要的名称,如果您愿意,您可以向已发送的消息添加更多成员

现在,您需要创建一个名为“MethodOnYourController”的方法来捕获此事件:

YourController = Ext.extend(Ext.Controller, {
    MethodOnYourController: function(options)
    {
        this.itemDetails = options.yourDetails; // get the "yourDetails" that you added and store it in this controller
    }
});

我还没有测试过这段代码,但是想法应该很清楚。

我希望有一种Sencha方式,不需要使用全局变量。类似于Ext.getModel('MyItems'),并将'MyItems'传递给Ext.create()。感谢您的回复!我使用的是MVC模式——如何在控制器中存储模型实例?听起来正是我想要的。不客气!我已经编辑了我的帖子。我的答案请看超过“[编辑]”标记的内容。非常感谢。这很有道理。我试着在网上找到如何做到这一点,但没有成功。你能告诉我这种方法是从哪里来的吗?我现在实际上在西雅图的Sencha研讨会上。我从Sencha Teagrams教程开始,因为它声称使用MVC:Teagrams示例并不是最好的,因为它对MVC范式不是很严格。我主要基于MVC的工作原理:-视图(面板)中没有逻辑,除了一些动画逻辑-控制器管理视图(面板)-控制器获取数据(JSON/XML/etc)并将数据推送到视图,我始终有一个主控制器,控制主应用程序逻辑并管理所有其他子控制器。