ソースを参照

Add queryParamsType option.

zhixin 11 年 前
コミット
1a88606573
2 ファイル変更28 行追加16 行削除
  1. 8 0
      docs/docs.js
  2. 20 16
      src/bootstrap-table.js

+ 8 - 0
docs/docs.js

@@ -134,6 +134,14 @@ $(function () {
                     example: 'server-side-pagination-table'
                 },
                 {
+                    name: 'queryParamsType',
+                    attribute: 'data-query-params-type',
+                    type: 'String',
+                    description: 'Set "limit" to send query params width restful type.',
+                    'default': 'undefined',
+                    example: '-'
+                },
+                {
                     name: 'responseHandler',
                     attribute: 'data-response-handler',
                     type: 'Function',

+ 20 - 16
src/bootstrap-table.js

@@ -68,6 +68,7 @@
         url: undefined,
         contentType: 'application/json',
         queryParams: function (params) {return {};},
+        queryParamsType: undefined,
         responseHandler: function (res) {return res;},
         pagination: false,
         sidePagination: 'client', // client or server
@@ -784,30 +785,33 @@
 
     BootstrapTable.prototype.initServer = function () {
         var that = this,
-            data = {};
+            data = {},
+            params = {
+                pageSize: this.options.pageSize,
+                pageNumber: this.options.pageNumber,
+                searchText: this.searchText,
+                sortName: this.options.sortName,
+                sortOrder: this.options.sortOrder
+            };
 
         if (!this.options.url) {
             return;
         }
         this.$loading.show();
 
+        if (this.options.queryParamsType === 'limit') {
+            params = {
+                limit: params.pageSize,
+                offset: params.pageSize * (params.pageNumber - 1),
+                search: params.searchText,
+                sort: params.sortName,
+                order: params.sortOrder
+            };
+        }
         if (typeof this.options.queryParams === 'function') {
-            data = this.options.queryParams({
-                pageSize: this.options.pageSize,
-                pageNumber: this.options.pageNumber,
-                searchText: this.searchText,
-                sortName: this.options.sortName,
-                sortOrder: this.options.sortOrder
-            });
+            data = this.options.queryParams(params);
         } else if (typeof this.options.queryParams === 'string') {
-            data = eval([this.options.queryParams,
-                '({',
-                    'pageSize: this.options.pageSize,',
-                    'pageNumber: this.options.pageNumber,',
-                    'searchText: this.searchText,',
-                    'sortName: this.options.sortName,',
-                    'sortOrder: this.options.sortOrder',
-                '})'].join(''));
+            data = eval(this.options.queryParams + '(params)');
         }
 
         $.ajax({