basic.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <script setup lang="ts">
  2. import { onMounted, onUnmounted, provide, ref, unref } from 'vue'
  3. import { UITag } from 'kankan-components'
  4. const tags = ref<any>([])
  5. onMounted(() => {
  6. console.warn('onMounted')
  7. const __win = window as any
  8. if (!__win.__sdk) {
  9. const __sdk = (__win.__sdk = new __win.KanKan({
  10. num: 'KJ-t-wOXfx2SDFy',
  11. // server: 'https://test.4dkankan.com',
  12. server: '/demoServer',
  13. }))
  14. provide('__sdk', __sdk)
  15. __sdk.TagManager.on('loaded', (data: any) => __sdk.TagManager.load((tags.value = data) && tags.value))
  16. __sdk.mount('#scene').render()
  17. }
  18. })
  19. onUnmounted(() => {
  20. const __win = window as any
  21. console.warn('onUnmounted')
  22. if (__win.__sdk) {
  23. __win.__sdk = null
  24. location.reload()
  25. }
  26. })
  27. const handleTagview = ({ id }) => {
  28. console.log('id', id)
  29. }
  30. </script>
  31. <template>
  32. <div id="scene" class="scene">
  33. <Teleport v-if="tags.length > 0" to=".kankan-plugins">
  34. <div xui_tags_view>
  35. <UITag v-for="(item, index) in tags" :key="index" :tag="item" @click="handleTagview" />
  36. </div>
  37. </Teleport>
  38. </div>
  39. </template>
  40. <style>
  41. html,
  42. body,
  43. #app {
  44. width: 100%;
  45. height: 100%;
  46. padding: 0;
  47. margin: 0;
  48. }
  49. .scene {
  50. width: 100%;
  51. height: 100%;
  52. padding: 0;
  53. margin: 0;
  54. }
  55. </style>