basic.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. if (__win.__sdk) {
  22. __win.__sdk = null
  23. }
  24. })
  25. const handleTagview = ({ id }) => {
  26. console.log('id', id)
  27. }
  28. </script>
  29. <template>
  30. <div id="scene" class="scene">
  31. <Teleport v-if="tags.length > 0" to=".kankan-plugins">
  32. <div xui_tags_view>
  33. <UITag v-for="(item, index) in tags" :key="index" :tag="item" @click="handleTagview" />
  34. </div>
  35. </Teleport>
  36. </div>
  37. </template>
  38. <style>
  39. html,
  40. body,
  41. #app {
  42. width: 100%;
  43. height: 100%;
  44. padding: 0;
  45. margin: 0;
  46. }
  47. .scene {
  48. width: 100%;
  49. height: 100%;
  50. padding: 0;
  51. margin: 0;
  52. }
  53. </style>