最近几天在维护设备管理模块下的一个前台页面时,觉得部分代码逻辑有些混乱,其实一些重复的代码可以抽取出来封在一个函数里.一些校验的工作具有普遍性,也可以把这部分抽取出来.比如"灰"掉多个grid控件的操作按钮和复位,比如"灰"掉表单的所有控件和复位.
//抽取可重用的代码,复位 var _reset = { ms_grid: function (state) { var _temp; for (var i = 0; i < obj_frame.children.length; i++) { _temp = obj_frame.children[i]; if (_temp.type === "grid" || _temp.type === "editGrid") { for (var p in _temp.tbar) { if (_temp.tbar[p].text) { var bt = _temp.getButton(_temp.tbar[p].text); bt.toggle(true, true); state && bt[state](); } } } } }, ms_form: function (state) { var _temp; for (var i = 0; i < obj_frame.children.length; i++) { _temp = obj_frame.children[i]; if (_temp.type === "form") { for (var p in _temp.layout[0].items) { _temp.layout[0].items[p].name && $(_temp.layout[0].items[p].name)[state](); } } } }, ms_query: function () { var _temp = true; var _arr = [obj_date, obj_class, obj_post]; for (var i = 0; i < _arr.length; i++) { if (_arr[i].getValue && _arr[i].getValue() === "") _temp = false; } if (_temp) { Sail.postData("http://www.cnblogs.com/../DataMap?funcname=listMaintainmanchangerec&sysFlag=1", { maintainmanchangerecRecdate: obj_date.getValue(), maintainmanchangerecPost: obj_post.getValue(), workteam: obj_class.getValue() }, function (flag, getData) { if (flag == "true") { if (getData.dataset.totalRecords == '0') { $('责任维修').setData('', ''); $('交接人').setData('', ''); return; } var retMap = getData.dataset.maintainmanchangerecvo; if (retMap.dutyman) { $('责任维修').setData(retMap.dutyman, retMap.dutymanName); } else { $('责任维修').setData('', ''); } if (retMap.transferman) { $('交接人').setData(retMap.transferman, retMap.transfermanName); } else { $('交接人').setData('', ''); } } else { Ext.Msg.alert("警告!", getData.dataset.response.content); } }); } } };
根据业务要求还可以扩展出许多有趣的功能哦!
看看下面什么调用吧:
obj_class.on('aftersetvalue', function (combox, record, text, value) { _reset.ms_query(); }); obj_post.on('aftersetvalue', function (combox, record, text, value) { _reset.ms_query(); }); obj_date.on('aftersetvalue', function (combox, record, text, value) { _reset.ms_query(); }); obj_form.addButtonHandler('重置', function () { _reset.ms_form("enable"); _reset.ms_grid("disable"); });