我点击一个按钮时实例化一个类。如何在按钮回调之外获得对此类实例的引用?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