basic.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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('#scene').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="scene" 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" @click="handleTagview" />
  36. </div>
  37. <!-- <div xui_tags_view>
  38. <UITag v-for="(item, index) in tags" :key="index" :tag="item">
  39. <template #content="{ data, id, isClick, isShow, x, y }">
  40. <div>id:{{ id }}</div>
  41. <div>isClick:{{ isClick }}</div>
  42. <div>isShow:{{ isShow }}</div>
  43. <div>x:{{ x }}</div>
  44. <div>y:{{ y }}</div>
  45. </template>
  46. </UITag>
  47. </div> -->
  48. </Teleport>
  49. </div>
  50. </template>
  51. <style>
  52. html,
  53. body,
  54. #app {
  55. width: 100%;
  56. height: 100%;
  57. padding: 0;
  58. margin: 0;
  59. }
  60. .scene {
  61. width: 100%;
  62. height: 600px;
  63. padding: 0;
  64. margin: 0;
  65. }
  66. </style>