MyContent.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <template lang="html">
  2. <div id="home" class="home">
  3. <div v-for="x in list" class="list">
  4. <pixel-content :x="x" />
  5. </div>
  6. <div v-if="option.refresh" class="refresh-footer">
  7. <pixel-spinner :size="'45px'" :color="'#007AFF'" />
  8. </div>
  9. </div>
  10. </template>
  11. <script>
  12. import { mapActions, mapGetters } from 'vuex'
  13. import PixelContent from '@/components/status/PixelContent'
  14. import PixelSpinner from '@/components/status/PixelSpinner'
  15. export default {
  16. name: 'Home',
  17. components: {
  18. PixelContent,
  19. PixelSpinner
  20. },
  21. data() {
  22. return {
  23. list: []
  24. }
  25. },
  26. computed: {
  27. ...mapGetters({
  28. statuses: 'my_content',
  29. option: 'my_content_option',
  30. showImage: 'image_zoom_show'
  31. })
  32. },
  33. watch: {
  34. option: {
  35. handler: function(val, oldVal) {
  36. if (val && val.page === 1) {
  37. this.list = []
  38. }
  39. },
  40. deep: true
  41. },
  42. statuses: function(val, oldVal) {
  43. if (val) {
  44. if (this.option.page === 1) {
  45. this.list = val
  46. } else {
  47. this.list = [...this.list, ...val]
  48. }
  49. }
  50. }
  51. },
  52. created() {
  53. this.myContent(1)
  54. },
  55. mounted() {
  56. },
  57. activated() {
  58. window.addEventListener('scroll', this.scrollBar)
  59. },
  60. deactivated() {
  61. window.removeEventListener('scroll', this.scrollBar)
  62. },
  63. methods: {
  64. ...mapActions([
  65. 'getMyContent'
  66. ]),
  67. myContent(page) {
  68. this.getMyContent(page)
  69. },
  70. loadMore() {
  71. const vue = this
  72. vue.option.refresh = true
  73. var page = vue.option.page + 1
  74. vue.myContent(page)
  75. },
  76. scrollBar() {
  77. var a = document.documentElement.scrollTop === 0 ? document.body.clientHeight : document.documentElement.clientHeight
  78. var b = document.documentElement.scrollTop === 0 ? document.body.scrollTop : document.documentElement.scrollTop
  79. var c = document.documentElement.scrollTop === 0 ? document.body.scrollHeight : document.documentElement.scrollHeight
  80. if (a + b === c && !this.showImage) {
  81. console.log(a + b)
  82. this.loadMore()
  83. }
  84. }
  85. }
  86. }
  87. </script>
  88. <style lang="css">
  89. .list {
  90. flex: 1;
  91. background-color: #fff;
  92. border-radius: 2px;
  93. padding: 1rem;
  94. margin-bottom: .8rem;
  95. box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);
  96. }
  97. .refresh-footer {
  98. margin-bottom: .8rem;
  99. margin-top: .8rem;
  100. text-align: center;
  101. }
  102. </style>