在 Ext 中开发 button 按钮事件时(删除表格中的一条记录),有一部分是与本地模块有关又不能通过参数(被删除数据的主键值)
为了实现删除事件通用,我们可以通过参数传递;多态;全局变量。
参数传递不允许
全局变量麻烦
只有通过多态实现
User.getBtnDelete= function (urlDelete,store) {
var btnDelete=Create.createBtnDelete();
btnDelete.setHandler( function () { //alert('urlDelete='+urlDelete)
var o= new Handler.deleteHanlder(User.grid,urlDelete,store);
o.method(); //Handler.deleteHanlder(User.grid,urlDelete,store);
} )
return btnDelete;
}
Create.createBtnDelete= function () {
var btnDelete= new Ext.Button( {
id: 'btnDelete' ,
text: ' 删除记录 ' ,
iconCls: 'form-delete'
} )
return btnDelete;
}
Handler.deleteHanlder= function (grid,urlDelete,store) {
var method = this .method;
this .method = function () {
var ids=method.call( this ); //alert(ids)
if (ids)
deleteAction(ids,urlDelete,store);
}
}
deleteAction = function (ids, url,store)
{
Ext.Msg.confirm( ' 信息 ' , ' 确定要删除所选项吗 ?' , function (btn)
{
if (btn == 'yes' )
{
Ext.Ajax.request( {
url : url,
success : function ()
{
Handler.reload(store);
//pagingToolbar.setNotificationMessage(" 记录删除成功 ");
} ,
params : {
ids : ids
}
} );
}
} );
}
为了演示多态我从网上转一个例子
function parentClass1() {
this .method = function () {
alert( "parentClass1 method" );
return 'test' ;
}
}
subClass1.prototype = new parentClass1();
function subClass1() {
var method = this .method;
this .method = function () {
var t=method.call( this );
alert( 't=' +t)
alert( "subClass1 method" );
}
}