jsmind.vue 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <!--
  2. initData(基础参数配置,实际数据): 由父组件调用,成功后返回jsmind实例
  3. @event {选中节点} selectNode 派发事件selectNode
  4. -->
  5. <template>
  6. <div class="h100">
  7. <div :id="id" style="width:100%;height:100%;"></div>
  8. </div>
  9. </template>
  10. <script>
  11. import "@/assets/js/jsmind.js"
  12. import "@/assets/css/jsmind.css"
  13. export default {
  14. name: "jsMindComponent",
  15. props: {
  16. id: {
  17. type: String,
  18. default: function createRandomId() {
  19. return (Math.random() * 10000000).toString(16).substr(0, 4) + '-' + (new Date()).getTime() + '-' + Math.random().toString().substr(2, 5);
  20. }
  21. },
  22. },
  23. data() {
  24. return {
  25. jm: ""
  26. }
  27. },
  28. created() {
  29. console.log(111)
  30. },
  31. mounted() {
  32. console.log(jsMind)
  33. },
  34. methods: {
  35. initData(options, data) {
  36. let el = {
  37. container: this.id,
  38. editable: true, //是否启用编辑
  39. theme: "greensea", //主题
  40. mode: "side", //显示模式
  41. support_html: true //是否支持节点里的HTML元素
  42. },
  43. option = Object.assign({
  44. container: this.id,
  45. editable: true,
  46. theme: 'orange'
  47. }, options);
  48. this.jm = new jsMind(el)
  49. this.jm.show(data)
  50. console.log(this.jm)
  51. this.jm.view.container.addEventListener('click', this.click)
  52. this.jm.view.container.addEventListener('mouseover', this.hoverElement)
  53. return this.jm
  54. },
  55. hoverElement(e) {
  56. console.log()
  57. let nodeid = e.target.getAttribute('nodeid')
  58. if (!!nodeid) {
  59. e.target.setAttribute('title', e.target.innerHTML)
  60. }
  61. },
  62. click(e) {
  63. let event = e || window.event,
  64. target = event.target || event.srcEvent,
  65. val = target.innerHTML;
  66. console.log(event, target, target)
  67. if (target.nodeName == "JMEXPANDER") {
  68. console.log(target.innerHTML)
  69. //-为展开
  70. if (val == "-") {
  71. console.log(this.jm.get_node(target.getAttribute("nodeid")))
  72. this.$emit("openNode", this.jm.get_node(target.getAttribute("nodeid")))
  73. } else {
  74. }
  75. }
  76. }
  77. }
  78. }
  79. </script>
  80. <style lang="scss" scoped>
  81. </style>