• smart-table 服务端请求真分


    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();
           
    }])
  • 相关阅读:
    linux命令行 238
    C语言语法分析器 238
    有穷自动机的构造与识别 238
    简单词法分析实验报告238许锦沛 238
    javascript获得鼠标的坐标值
    滚动条颜色设置(IE、chrome浏览器)
    获取元素的页面位置,兼容各浏览器
    js闭包的作用
    javascrpt绑定事件之匿名函数
    javascript 函数及作用域
  • 原文地址:https://www.cnblogs.com/yiyangl/p/11424176.html
Copyright © 2020-2023  润新知