Blabla.vue 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <div id="blabla">
  3. <div class="loading" v-if="!items.length">
  4. <span>Loading ...</span>
  5. </div>
  6. <div class="cards-list" v-else>
  7. <ul>
  8. <li v-for="item in items" v-bind:key="item.uuid">
  9. <ArticleCard :item="item"/>
  10. </li>
  11. </ul>
  12. <infinite-loading @infinite="getArticles">
  13. <div slot="no-more">No more results</div>
  14. </infinite-loading>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. import { REST } from 'vuejs/api/rest-axios'
  20. import ArticleCard from 'vuejs/components/Content/ArticleCard'
  21. export default {
  22. name: "Blabla",
  23. data() {
  24. return {
  25. items:[],
  26. page:0
  27. }
  28. },
  29. created(){
  30. this.getArticles()
  31. },
  32. methods: {
  33. getArticles($state){
  34. REST.get(`/blabla_rest?_format=json&page=${this.page}`, {})
  35. .then(({ data }) => {
  36. console.log('blabla REST: data', data)
  37. if(data.length){
  38. this.items = this.items.concat(data)
  39. // console.log('items.length', this.items.length);
  40. this.page += 1;
  41. if($state)
  42. $state.loaded()
  43. }else{
  44. if($state)
  45. $state.complete()
  46. }
  47. })
  48. .catch(( error ) => {
  49. console.warn('Issue with blabla', error)
  50. Promise.reject(error)
  51. })
  52. }
  53. },
  54. components: {
  55. ArticleCard
  56. }
  57. }
  58. </script>
  59. <style lang="scss" scoped>
  60. </style>