HTML <table st-table='shortData.data' st-pipe="callServer"></table>
factory
app.factory('dataResource', ['$q', '$filter', '$timeout', '$http', function($q, $filter, $timeout, $http) { var baseData = {}; function getPage(start, number, params, baseUrl, initDatas) { /* * start 当前页码 * number 每页数量 * params pagination页码数 search搜索 sort排序 */ var start = start; var deferred = $q.defer(); var pages = 0; var filterStr = ''; if (initDatas) { baseData = initDatas; } var filtered = params.search.predicateObject ? $filter('filter')(baseData.data, params.search.predicateObject) : baseData.data; //排序 if (params.sort.predicate) { filtered = $filter('orderBy')(filtered, params.sort.predicate, params.sort.reverse); } var result = filtered.slice(start, start + number); var setStart = Math.floor(start / number) + 1; //筛选 if (params.search.predicateObject) { angular.forEach(params.search.predicateObject, function(val, key) { filterStr += key + '=' + val + '&'; }) if (setStart != 1 && setStart == Math.ceil(filtered.length / number)) { $http({ method: 'get', url: baseUrl + '?offset=' + Math.ceil(filtered.length) + '&amount=100&' + filterStr }).then(function(response) { angular.forEach(response.data.data, function(val, key) { baseData.data.push(val); }); deferred.resolve({ columns: baseData.columns, data: result, numberOfPages: Math.ceil(filtered.length / number) }); }, function() { }); } else { if (JSON.stringify(params.search.predicateObject) == "{}") { filterStr = 'amount=100'; } $http({ method: 'get', url: baseUrl + '?' + filterStr }).then(function(response) { baseData.data = response.data.data; var result = baseData.data.slice(start, start + number); deferred.resolve({ columns: baseData.columns, data: result, numberOfPages: Math.ceil(baseData.data.length / number) }); if (JSON.stringify(params.search.predicateObject) == "{}") { //重置搜索 delete params.search.predicateObject } }, function() { }); } } else { //默认执行 if (setStart == Math.ceil(filtered.length / number)) { $http({ method: 'get', url: baseUrl + '?offset=' + Math.ceil(filtered.length) + '&amount=100' }).then(function(response) { if(response.data.data.length>0){ angular.forEach(response.data.data, function(val, key) { baseData.data.push(val); }); deferred.resolve({ columns: baseData.columns, data: baseData.data.slice(start, start + number), numberOfPages: Math.ceil(filtered.length / number) }); }else{ return } }, function() { }); } else { deferred.resolve({ columns: baseData.columns, data: result, numberOfPages: Math.ceil(filtered.length / number) }); } } return deferred.promise; } return { getPage: getPage }; }]);
app.controller('snvindelController', [ '$scope', 'ngTip', '$http', 'toaster', 'Upload', '$timeout', 'dataResource', function($scope, ngTip, $http, toaster, Upload, $timeout, dataResource) { //初始化远程数据 $scope.callServer = function(tableState,StTableController,initDatas) { $scope.isLoading = true; var pagination = tableState.pagination; var start = pagination.start || 0; var number = pagination.number || 10; var baseUrl ='/ismartDB/snvindel'; dataResource.getPage(start, number, tableState,baseUrl,initDatas).then(function(response) { $scope.shortData = response; tableState.pagination.numberOfPages = response.numberOfPages; //set the number of pages so the pagination can update $scope.isLoading = false; }); }; //重置远程数据 $scope.resetData = function() { var config = { config: {}, options: {}, pagination: { start: 0, totalItemCount: 0, number: 10, numberOfPages: 10 }, search: {}, sort: {} } $http({ method: 'get', url: $scope.baseUrl + 'ismartDB/snvindel?amount=100' }).then(function(response) { if (response.data.error) { toaster.pop({ type: 'error', body: response.data.error, timeout: 0 }); } else { $scope.callServer(config,'',response.data) } }, function() { toaster.pop({ type: 'error', body: '列表获取失败请与管理员联系', timeout: 0 }); }); }; $scope.resetData(); }])