bootstrap-table-angular.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. .on('search.bs.table', function (evt, searchText) {
  22. if (!options) return;
  23. options.searchText = searchText;
  24. });
  25. $s.$watch('options', function (newOptions) {
  26. if (!newOptions) return;
  27. if (options) {
  28. scroll = $el.bootstrapTable('getScrollPosition');
  29. $el.bootstrapTable('destroy');
  30. }
  31. newOptions = angular.copy(newOptions);
  32. if (options) angular.forEach(['sortName', 'sortOrder', 'pageNumber', 'pageSize', 'searchText'], function (key) {
  33. if (key in options) newOptions[key] = options[key];
  34. });
  35. options = newOptions;
  36. $el.bootstrapTable(options);
  37. if (scroll) $el.bootstrapTable('scrollTo', scroll);
  38. }, true);
  39. $(window).resize(function () {
  40. if (options) $el.bootstrapTable('resetView');
  41. })
  42. }
  43. };
  44. })
  45. })();