basic.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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) =>
  14. __sdk.TagManager.load((tags.value = data) && tags.value)
  15. )
  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
  34. v-for="(item, index) in tags"
  35. :key="index"
  36. :tag="item"
  37. @click="handleTagview"
  38. />
  39. </div>
  40. </Teleport>
  41. </div>
  42. </template>
  43. <style>
  44. html,
  45. body,
  46. #app {
  47. width: 100%;
  48. height: 100%;
  49. padding: 0;
  50. margin: 0;
  51. }
  52. .scene {
  53. width: 100%;
  54. height: 100%;
  55. padding: 0;
  56. margin: 0;
  57. }
  58. </style>