custom.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <script setup lang="ts">
  2. import { onMounted, onUnmounted, provide, ref } from 'vue'
  3. import { KkTag } 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: 'https://test.4dkankan.com',
  11. server: '#DEMOSEVER#',
  12. }))
  13. provide('__sdk', __sdk)
  14. __sdk.TagManager.on('loaded', (data: any) =>
  15. __sdk.TagManager.load((tags.value = data) && tags.value)
  16. )
  17. __sdk.mount(`#scene1`).render()
  18. }
  19. })
  20. onUnmounted(() => {
  21. const __win = window as any
  22. if (__win.__sdk) {
  23. __win.__sdk = null
  24. }
  25. })
  26. const handleTagview = ({ id }) => {
  27. console.log('id', id)
  28. }
  29. </script>
  30. <template>
  31. <div id="scene1" class="scene">
  32. <Teleport v-if="tags.length > 0" to=".kankan-plugins">
  33. <div xui_tags_view>
  34. <kk-tag
  35. v-for="(item, index) in tags"
  36. :key="index"
  37. :tag="item"
  38. @click="handleTagview"
  39. >
  40. <template #content="{ data, id, isClick, isShow, x, y }">
  41. <div>id:{{ id }}</div>
  42. <div>content:{{ data.content }}</div>
  43. <div>isClick:{{ isClick }}</div>
  44. <div>isShow:{{ isShow }}</div>
  45. <div>x:{{ x }}</div>
  46. <div>y:{{ y }}</div>
  47. </template>
  48. </kk-tag>
  49. </div>
  50. </Teleport>
  51. </div>
  52. </template>
  53. <style>
  54. html,
  55. body,
  56. #app {
  57. width: 100%;
  58. height: 100%;
  59. padding: 0;
  60. margin: 0;
  61. }
  62. .scene {
  63. width: 100%;
  64. height: 100%;
  65. padding: 0;
  66. margin: 0;
  67. }
  68. </style>