bsTable.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. if (options) newOptions = $.extend({}, newOptions, {
  28. sortName: options.sortName,
  29. sortOrder: options.sortOrder,
  30. pageNumber: options.pageNumber,
  31. pageSize: options.pageSize
  32. });
  33. options = newOptions;
  34. $el.bootstrapTable(options);
  35. if (scroll) $el.bootstrapTable('scrollTo', scroll);
  36. }, true);
  37. $(window).resize(function () {
  38. if (options) $el.bootstrapTable('resetView');
  39. })
  40. }
  41. };
  42. })
  43. })();