custom.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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(`#scene1`).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="scene1" 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">
  34. <template #content="{ data, id, isClick, isShow, x, y }">
  35. <div>id:{{ id }}</div>
  36. <div>content:{{ data.content }}</div>
  37. <div>isClick:{{ isClick }}</div>
  38. <div>isShow:{{ isShow }}</div>
  39. <div>x:{{ x }}</div>
  40. <div>y:{{ y }}</div>
  41. </template>
  42. </UITag>
  43. </div>
  44. </Teleport>
  45. </div>
  46. </template>
  47. <style>
  48. html,
  49. body,
  50. #app {
  51. width: 100%;
  52. height: 100%;
  53. padding: 0;
  54. margin: 0;
  55. }
  56. .scene {
  57. width: 100%;
  58. height: 100%;
  59. padding: 0;
  60. margin: 0;
  61. }
  62. </style>