Item.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <MainContentLayout id="text" class="text">
  3. <template v-slot:header>
  4. <h1>
  5. {{ item.title }}
  6. </h1>
  7. <span v-if="!loaded">Loading...</span>
  8. </template>
  9. <div class="content" v-html="item.tei"/>
  10. <template v-slot:nav>
  11. </template>
  12. </MainContentLayout>
  13. </template>
  14. <script>
  15. import { REST } from 'api/rest-axios'
  16. import MainContentLayout from '../components/Layouts/MainContentLayout'
  17. export default {
  18. name: 'Item',
  19. components: {
  20. MainContentLayout
  21. },
  22. props: {
  23. uuid: {
  24. type: String,
  25. required: true
  26. }
  27. },
  28. data: () => ({
  29. loaded: false,
  30. item: {}
  31. }),
  32. watch: {
  33. '$route' (to, from) {
  34. console.log('item route change')
  35. this.loadItem()
  36. }
  37. },
  38. created () {
  39. console.log('Item created', this.uuid)
  40. this.loadItem()
  41. },
  42. updated () {
  43. console.log('item updated', this.uuid)
  44. },
  45. methods: {
  46. loadItem () {
  47. this.loaded = false
  48. REST.get(`/items/` + this.uuid, {})
  49. .then(({ data }) => {
  50. console.log('item REST: data', data)
  51. this.item = data.content
  52. this.loaded = true
  53. })
  54. .catch((error) => {
  55. console.warn('Issue with item', error)
  56. Promise.reject(error)
  57. })
  58. }
  59. }
  60. }
  61. </script>
  62. <style lang="scss" scoped>
  63. </style>