Item.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. </MainContentLayout>
  12. </template>
  13. <script>
  14. import { REST } from 'api/rest-axios'
  15. import MainContentLayout from '../components/Layouts/MainContentLayout'
  16. export default {
  17. name: 'Item',
  18. components: {
  19. MainContentLayout
  20. },
  21. props: {
  22. uuid: {
  23. type: String,
  24. required: true
  25. }
  26. },
  27. data: () => ({
  28. loaded: false,
  29. item: {}
  30. }),
  31. watch: {
  32. '$route' (to, from) {
  33. console.log('item route change')
  34. this.loadItem()
  35. }
  36. },
  37. created () {
  38. console.log('Item created', this.uuid)
  39. this.loadItem()
  40. },
  41. updated () {
  42. console.log('item updated', this.uuid)
  43. },
  44. methods: {
  45. loadItem () {
  46. this.loaded = false
  47. REST.get(`/items/` + this.uuid, {})
  48. .then(({ data }) => {
  49. console.log('item REST: data', data)
  50. this.item = data.content
  51. this.loaded = true
  52. })
  53. .catch((error) => {
  54. console.warn('Issue with item', error)
  55. Promise.reject(error)
  56. })
  57. }
  58. }
  59. }
  60. </script>
  61. <style lang="scss" scoped>
  62. </style>