index.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import baseComponent from '../helpers/baseComponent'
  2. import classNames from '../helpers/libs/classNames'
  3. baseComponent({
  4. relations: {
  5. '../sticky-item/index': {
  6. type: 'child',
  7. observer() {
  8. this.callDebounceFn(this.updated)
  9. },
  10. },
  11. },
  12. properties: {
  13. prefixCls: {
  14. type: String,
  15. value: 'wux-sticky',
  16. },
  17. scrollTop: {
  18. type: Number,
  19. value: 0,
  20. observer: 'onScroll',
  21. },
  22. },
  23. computed: {
  24. classes: ['prefixCls', function(prefixCls) {
  25. const wrap = classNames(prefixCls)
  26. return {
  27. wrap,
  28. }
  29. }],
  30. },
  31. methods: {
  32. onScroll(scrollTop = this.data.scrollTop) {
  33. const elements = this.getRelationsByName('../sticky-item/index')
  34. if (elements.length > 0) {
  35. elements.forEach((element, index) => {
  36. element.onScroll(scrollTop)
  37. })
  38. }
  39. },
  40. updated() {
  41. const elements = this.getRelationsByName('../sticky-item/index')
  42. if (elements.length > 0) {
  43. elements.forEach((element, index) => {
  44. element.updated(index)
  45. })
  46. }
  47. },
  48. },
  49. })