custom.vue 1.8 KB

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