部门前台框架一些可重用的代码

    最近几天在维护设备管理模块下的一个前台页面时,觉得部分代码逻辑有些混乱,其实一些重复的代码可以抽取出来封在一个函数里.一些校验的工作具有普遍性,也可以把这部分抽取出来.比如"灰"掉多个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");
            });
原文地址:https://www.cnblogs.com/ms_config/p/1689038.html