接触 easyui 半年,js学的不深。大神请路过。
直接扩展
添加方法:
$.extend($.fn.datagrid.methods, { getSelectedIndex: function (jq) {//jq这个参数固定,如果需要定义其它参数写到后面
var rowIndex = -1;
jq.each(function () {//只取一个,其它不管。
var dg = $(this);
var row = dg.datagrid('getSelected');
if (row == null) return false;//break;
rowIndex = dg.datagrid('getRowIndex', row);
if (rowIndex == null) rowIndex = -1;
return false;//break;
});
return rowIndex;
}
继承的方式
这个比较难,因为,easyui底层的函数参数是混淆的。看不懂代码。
不懂从哪里入手,想到看源码参考。比如 dialog 是从 window 继承过来的。
init 和 Render是我自己猜的函数名。只是为了帮助理解。
$.fn.dialog //这个定义 dialog
$.fn.dialog.methods //写 dialog 自己的函数。
$.fn.dialog.parseOptions //解析参数
$.fn.dialog.defaults //dialog 自己的默认定义
第一个 $.fn.dialog ,看注释:
其它三个块:
其中 $.fn.dialog.methods 只需要知道:添加方法,有一个参数 jq。
好了,大概了解怎么写扩展了吧。
在 init 重写事件
onBeginEdit: function (index, row) { //这个function是 基类datagrid调用的。
opts.rowEditingIndexes.push(index);
opts.onBeginEdit.apply(this, [index, row]); //子类选项中的事件处理器调用
}
整个类的源码 不懂的怎么上传。
有需要的话加这个群吧:334214995