bootstrap-table-angular.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. newOptions = angular.copy(newOptions);
  28. if (options) angular.forEach(['sortName', 'sortOrder', 'pageNumber', 'pageSize'], function (key) {
  29. if (key in options) newOptions[key] = options[key];
  30. });
  31. options = newOptions;
  32. $el.bootstrapTable(options);
  33. if (scroll) $el.bootstrapTable('scrollTo', scroll);
  34. }, true);
  35. $(window).resize(function () {
  36. if (options) $el.bootstrapTable('resetView');
  37. })
  38. }
  39. };
  40. })
  41. })();