grid.js 928 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // register the grid component
  2. Vue.component('demo-grid', {
  3. template: '#grid-template',
  4. replace: true,
  5. paramAttributes: ['data', 'columns', 'filter-key'],
  6. data: function () {
  7. return {
  8. data: null,
  9. columns: null,
  10. sortKey: '',
  11. filterKey: '',
  12. reversed: {}
  13. }
  14. },
  15. compiled: function () {
  16. // initialize reverse state
  17. var self = this
  18. this.columns.forEach(function (key) {
  19. self.reversed.$add(key, false)
  20. })
  21. },
  22. methods: {
  23. sortBy: function (key) {
  24. this.sortKey = key
  25. this.reversed[key] = !this.reversed[key]
  26. }
  27. }
  28. })
  29. // bootstrap the demo
  30. var demo = new Vue({
  31. el: '#demo',
  32. data: {
  33. searchQuery: '',
  34. gridColumns: ['name', 'power'],
  35. gridData: [
  36. { name: 'Chuck Norris', power: Infinity },
  37. { name: 'Bruce Lee', power: 9000 },
  38. { name: 'Jacky Chang', power: 7000 },
  39. { name: 'Jet Li', power: 8000 }
  40. ]
  41. }
  42. })