extjsmvc中的可重用操作
我有一个带有工具栏和关联菜单的网格面板。 工具栏有一个编辑按钮,关联菜单有一个编辑菜单项。 两者共享相同的属性(文本、图标和处理程序) Ext有一个叫做Action的东西,它可以在组件之间共享功能等,但是直到现在我还没有成功地让它在MVC架构中工作 (我正在4.0中使用新的MVC体系结构) 我的动作类如下所示:extjsmvc中的可重用操作,extjs,extjs-mvc,Extjs,Extjs Mvc,我有一个带有工具栏和关联菜单的网格面板。 工具栏有一个编辑按钮,关联菜单有一个编辑菜单项。 两者共享相同的属性(文本、图标和处理程序) Ext有一个叫做Action的东西,它可以在组件之间共享功能等,但是直到现在我还没有成功地让它在MVC架构中工作 (我正在4.0中使用新的MVC体系结构) 我的动作类如下所示: Ext.define( 'App.action.EditAction', { extend: 'Ext.Action', text: 'Edit', handle
Ext.define( 'App.action.EditAction', {
extend: 'Ext.Action',
text: 'Edit',
handler: function()
{
Ext.Msg.alert('Click', 'You did something.');
},
iconCls: 'icon-edit-user' ,
});
在我的上下文菜单中
requires: ['App.action.EditAction'],
initComponent: function()
{
var editUser = new App.action.EditAction();
this.items = [
editUser,
{
// More menuitems
}
...
];
this.callParent(arguments);
运行代码时,我在控制台中得到“config is undefined”
有人能指出我做错了什么吗
提前感谢,
t根据外部动作构造器
constructor : function(config){
this.initialConfig = config;
this.itemId = config.itemId = (config.itemId || config.id || Ext.id());
this.items = [];
}
您必须提供config,才能在第二行(确切地说是在config.itemId
部分)中获得config is undefined
异常
将代码更新为var editUser=new App.action.EditAction({})代码>应该有帮助(将新的空对象作为配置传递)。
当然,您也可以向config对象添加一些属性 将空配置传递给构造函数将避免错误,但稍后会产生不必要的后果,因为很遗憾,基类(Ext.Action
)稍后依赖于this.initialConfig
。例如,如果调用editUser.getText()
,它将返回undefined
,而不是预期的'Edit'
另一种方法是重写构造函数以允许无参数调用,并应用重写的配置:
Ext.define( 'App.action.EditAction', {
extend: 'Ext.Action',
text: 'Edit',
constructor: function(config)
{
config = Ext.applyIf(config || {}, this);
this.callParent([config]);
},
handler: function()
{
Ext.Msg.alert('Click', 'You did something.');
},
iconCls: 'icon-edit-user' ,
});