我點擊一個按鈕時實例化一個類。如何在按鈕回調之外獲得對此類實例的引用?Sencha觸摸 - 如何獲得類實例的參考
handler: function() {
var formValues = Ext.getCmp('DonateItemForm').getValues(),
itemDetails = Ext.create('App.model.ItemDetails', formValues);
}
編輯:如果不使用全球
我點擊一個按鈕時實例化一個類。如何在按鈕回調之外獲得對此類實例的引用?Sencha觸摸 - 如何獲得類實例的參考
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
}
});
我還沒有測試此代碼,但這個想法應該很清楚。
var itemDetails;
//...
handler: function() {
var formValues = Ext.getCmp('DonateItemForm').getValues();
itemDetails = Ext.create('App.model.ItemDetails', formValues);
}
//...
只需創建一個全局變量(經辦人外),並在處理程序分配給它
我一直希望Sencha方式不需要使用全局。像Ext.getModel('MyItems')並將'MyItems'傳遞給Ext.create()。 – Brett
感謝您的回覆!我正在使用MVC模式 - 我如何着手將模型實例存儲在控制器中?聽起來像我想要的。 – Brett
不客氣!我編輯了我的帖子。查看通過「\ [edit \]」標記查看我答案的內容。 –
非常感謝。非常有意義。我試圖找到如何在網上做到這一點,沒有成功。你能告訴我你從哪裏得到這個方法嗎?我現在在西雅圖的Sencha Workshop。 – Brett