bsTable.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // JavaScript source code
  2. (function () {
  3. angular.module('bsTable', []).directive('bsTableControl', function () {
  4. return {
  5. restrict: 'EA',
  6. scope: {options: '='},
  7. link: function ($s, $el) {
  8. var scroll;
  9. var options;
  10. $el
  11. .on('sort.bs.table', function (evt, sortName, sortOrder) {
  12. if (!options) return;
  13. options.sortName = sortName;
  14. options.sortOrder = sortOrder;
  15. })
  16. .on('page-change.bs.table', function (evt, pageNumber, pageSize) {
  17. if (!options) return;
  18. options.pageNumber = pageNumber;
  19. options.pageSize = pageSize;
  20. });
  21. $s.$watch('options', function (newOptions) {
  22. if (!newOptions) return;
  23. if (options) {
  24. scroll = $el.bootstrapTable('getScrollPosition');
  25. $el.bootstrapTable('destroy');
  26. }
  27. options = $.extend(options ? {
  28. sortName: options.sortName,
  29. sortOrder: options.sortOrder,
  30. pageNumber: options.pageNumber,
  31. pageSize: options.pageSize
  32. } : {}, newOptions);
  33. $el.bootstrapTable(options);
  34. if (scroll) $el.bootstrapTable('scrollTo', scroll);
  35. }, true);
  36. $(window).resize(function () {
  37. if (options) $el.bootstrapTable('resetView');
  38. })
  39. }
  40. };
  41. })
  42. })();