Browse Source

Remember pageNumber, pageSize, sortName, sortOrder

Dan Kaplun 10 years ago
parent
commit
ab75d58dac
1 changed files with 34 additions and 24 deletions
  1. 34 24
      src/extensions/angular/bsTable.js

+ 34 - 24
src/extensions/angular/bsTable.js

@@ -1,27 +1,37 @@
 // JavaScript source code
 (function () {
-    angular.module('bsTable', [])
-   .directive('bsTableControl', function () {
-       return {
-           restrict: 'EA',
-           scope: {
-               options: '='
-           },
-           link: function (scope, $el, attr) {
-               var tableCreated = false;
-               scope.$watch('options', function (newValue, oldValue) {
-                   if (tableCreated && newValue === oldValue) return;
-                   $el.bootstrapTable('destroy');
-                   if (newValue) {
-                       $el.bootstrapTable(scope.options);
-                   }
-                   tableCreated = typeof (newValue) !== 'undefined';
-               });
-               $(window).resize(function () {
-                   if (tableCreated)
-                       $el.bootstrapTable('resetView');
-               })
-           }
-       };
-   })
+  angular.module('bsTable', []).directive('bsTableControl', function () {
+    return {
+      restrict: 'EA',
+      scope: {options: '='},
+      link: function ($s, $el) {
+        var options;
+        $el
+          .on('sort.bs.table', function (evt, sortName, sortOrder) {
+            if (!options) return;
+            options.sortName = sortName;
+            options.sortOrder = sortOrder;
+          })
+          .on('page-change.bs.table', function (evt, pageNumber, pageSize) {
+            if (!options) return;
+            options.pageNumber = pageNumber;
+            options.pageSize = pageSize;
+          });
+        $s.$watch('options', function (newOptions) {
+          if (!newOptions) return;
+          if (options) $el.bootstrapTable('destroy');
+          options = $.extend(options ? {
+            sortName: options.sortName,
+            sortOrder: options.sortOrder,
+            pageNumber: options.pageNumber,
+            pageSize: options.pageSize
+          } : {}, newOptions);
+          $el.bootstrapTable(options);
+        }, true);
+        $(window).resize(function () {
+          if (options) $el.bootstrapTable('resetView');
+        })
+      }
+    };
+  })
 })();