2011-11-29 51 views
0

我點擊一個按鈕時實例化一個類。如何在按鈕回調之外獲得對此類實例的引用?Sencha觸摸 - 如何獲得類實例的參考

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

編輯:如果不使用全球

回答

1

,可以儲存的模型實例中控制器管理您的面板(視圖)。 不過,如果你沒有按照模型 - 視圖 - 控制器模式編碼,那麼你可以將它連接到捐贈形式:

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 
    } 
}); 

我還沒有測試此代碼,但這個想法應該很清楚。

+0

感謝您的回覆!我正在使用MVC模式 - 我如何着手將模型實例存儲在控制器中?聽起來像我想要的。 – Brett

+1

不客氣!我編輯了我的帖子。查看通過「\ [edit \]」標記查看我答案的內容。 –

+0

非常感謝。非常有意義。我試圖找到如何在網上做到這一點,沒有成功。你能告訴我你從哪裏得到這個方法嗎?我現在在西雅圖的Sencha Workshop。 – Brett

0
var itemDetails; 

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

只需創建一個全局變量(經辦人外),並在處理程序分配給它

+0

我一直希望Sencha方式不需要使用全局。像Ext.getModel('MyItems')並將'MyItems'傳遞給Ext.create()。 – Brett