basic.vue 1.2 KB

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