GridManager Angular 1.x基于 Angular 1.x 的 GridManager 封装, 用于便捷的在 Angular 中使用GridManager.列表项目实现功能宽度调整: 表格的列宽度可进行拖拽式调整位置更换: 表格的列位置进行拖拽式调整配置列: 可通过配置对列进行显示隐藏转换表头吸顶: 在表存在可视区域的情况下,表头将一直存在于顶部排序: 表格单项排序或组合排序分页: 表格ajax分页,包含选择每页显示总条数和跳转至指定页功能用户偏好记忆: 记住用户行为,含用户调整的列宽、列顺序、列可视状态及每页显示条数序号: 自动生成序号列全选: 自动生成全选列导出: 当前页数据下载,和仅针对已选中的表格下载右键菜单: 常用功能在菜单中可进行快捷操作过滤: 通过对列进行过滤达到快速搜索效果API该文档为原生GridManager的文档,angular-1.x版本除了在columnData.text columnData.template topFullColumn.template中可以使用angular模版外,其它使用方式相同。APIDemo该示例为原生GridManager的示例,angular-1.x版本除了在columnData.text columnData.template topFullColumn.template中可以使用angular模版外,其它使用方式相同。简单的示例复杂的示例Core codeGridManagerjToolENVES2015 + webpack + angular 1.x + GridManager安装npm install gridmanager-angular.1.x –save项目中引用es2015引入方式import gridManager from ‘gridmanager-angular-1.x’;通过script标签引入<link rel=“stylesheet” href="../node_modules/gridmanager-angular-1.x/css/gm-angular.css"><script src="../node_modules/gridmanager-angular-1.x/js/gm-angular.js"></script>示例<html> <head> <link rel=“stylesheet” href=“https://unpkg.com/gridmanager-angular-1.x/css/gm-angular.css"> <script src=“https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> <script src=“https://unpkg.com/gridmanager-angular-1.x/js/gm-angular.js"></script> </head> <body ng-app=“myApp” ng-controller=“AppController as vm”> <grid-manager option=“option” callback=“callback(query)"></grid-manager> </body></html>function AppController($window, $rootScope, $scope, $element, $gridManager){ $scope.testClick = (row) => { console.log(‘click’, row); }; // 常量: 搜索条件 $scope.TYPE_MAP = { ‘1’: ‘HTML/CSS’, ‘2’: ’nodeJS’, ‘3’: ‘javaScript’, ‘4’: ‘前端鸡汤’, ‘5’: ‘PM Coffee’, ‘6’: ‘前端框架’, ‘7’: ‘前端相关’ }; $scope.searchForm = { title: ‘’, info: ’’ }; /** * 搜索事件 / $scope.onSearch = () => { console.log(‘onSearch’); $gridManager.setQuery(’testAngular’, $scope.searchForm); }; $scope.onReset = () => { $scope.searchForm = { title: ‘’, info: ’’ }; }; // 表格渲染回调函数 // query为gmOptions中配置的query $scope.callback = function(query) { console.log(‘callback => ‘, query); }; $scope.option = { gridManagerName: ’testAngular’, width: ‘100%’, height: ‘100%’, supportAjaxPage:true, isCombSorting: true, disableCache: false, ajax_data: function () { return ‘https://www.lovejavascript.com/blogManager/getBlogList'; }, ajax_type: ‘POST’, columnData: [ { key: ‘pic’, remind: ’the pic’, width: ‘110px’, align: ‘center’, text: ‘缩略图’, // ng template template: <a target="_blank" style="display:block; height:58.5px;" ng-href="https://www.lovejavascript.com/#!zone/blog/content.html?id={{row.id}}" title="点击阅读[{{row.title}}]"> <img style="width:90px;margin:0 auto;" ng-src="https://www.lovejavascript.com/{{row.pic}}" alt="{{row.title}}"> </a> },{ key: ’title’, remind: ’the title’, align: ’left’, text: ‘标题’, sorting: ‘’, // 使用函数返回 ng template template: function() { return ‘<a class=“plugin-action” target="_blank” ng-href=“https://www.lovejavascript.com/#!zone/blog/content.html?id={{row.id}}” title=“点击阅读[{{row.title}}]">{{row.title}}</a>’; } },{ key: ’type’, remind: ’the type’, text: ‘博文分类’, align: ‘center’, width: ‘150px’, sorting: ‘’, // 表头筛选条件, 该值由用户操作后会将选中的值以{key: value}的形式覆盖至query参数内。非必设项 filter: { // 筛选条件列表, 数组对象。格式: [{value: ‘1’, text: ‘HTML/CSS’}],在使用filter时该参数为必设项。 option: [ {value: ‘1’, text: ‘HTML/CSS’}, {value: ‘2’, text: ’nodeJS’}, {value: ‘3’, text: ‘javaScript’}, {value: ‘4’, text: ‘前端鸡汤’}, {value: ‘5’, text: ‘PM Coffee’}, {value: ‘6’, text: ‘前端框架’}, {value: ‘7’, text: ‘前端相关’} ], // 筛选选中项,字符串, 默认为’’。 非必设项,选中的过滤条件将会覆盖query selected: ‘3’, // 否为多选, 布尔值, 默认为false。非必设项 isMultiple: true }, // isShow: false, template: <button type="button" ng-click="testClick(row)" ng-bind="TYPE_MAP[row.type]"></button> },{ key: ‘info’, remind: ’the info’, width: ‘300px’, text: ‘简介’ },{ key: ‘username’, remind: ’the username’, align: ‘center’, width: ‘100px’, text: ‘作者’, // 使用函数返回 dom string template: <a class="plugin-action" href="https://github.com/baukh789" target="_blank" title="去看看{{row.username}}的github">{{row.username}}</a> },{ key: ‘createDate’, width: ‘130px’, text: ‘创建时间’, sorting: ‘DESC’, // 使用函数返回 htmlString template: function(createDate, rowObject){ return new Date(createDate).toLocaleDateString(); } },{ key: ’lastDate’, width: ‘130px’, text: ‘最后修改时间’, sorting: ‘’, // 使用函数返回 htmlString template: function(lastDate, rowObject){ return new Date(lastDate).toLocaleDateString(); } },{ key: ‘action’, remind: ’the action’, width: ‘100px’, align: ‘center’, text: ‘<span style=“color: red”>操作</span>’, // 直接返回 htmlString template: ‘<span class=“plugin-action” ng-click=“delectRowData(row, index)">删除</span>’ } ] }; /* * 模拟删除 * @param row * @param index */ $scope.delectRowData = function(row, index) { if(window.confirm(确认要删除当前页第[${index}]条的['${row.title}]?)){ console.log(’—-删除操作开始—-’); $gridManager.refreshGrid(’testAngular’); // $element[0].querySelector(’table[grid-manager=“testAngular”]’).GM(‘refreshGrid’); console.log(‘数据没变是正常的, 因为这只是个示例,并不会真实删除数据.’); console.log(’—-删除操作完成—-’); } };}AppController.inject = [’$window’, ‘$rootScope’, ‘$scope’, ‘$element’, ‘$gridManager’];angular .module(‘myApp’, [‘gridManager’]) .controller(‘AppController’, AppController);调用公开方法以下方法需要在已经存在gridManager实例的Angular环境下使用。// 刷新$gridManager.refreshGrid(’testAngular’);// 更新查询条件$gridManager.setQuery(’testAngular’, {name: ‘baukh’});// …其它更多请直接访问API查看当前版本import gridManager from ‘gridmanager-angular-1.x’;console.log(‘GridManager’, angular.module(‘gridManager’).version);
...