Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

105 Zeilen
2.2 KiB

  1. <!--**
  2. * forked from:https://github.com/F-loat/mpvue-wxParse
  3. *
  4. * github地址: https://github.com/dcloudio/uParse
  5. *
  6. * for: uni-app框架下 富文本解析
  7. */-->
  8. <template>
  9. <!--基础元素-->
  10. <div class="wxParse" :class="className" v-if="!loading">
  11. <block v-for="(node, index) of nodes" :key="index"><wxParseTemplate :node="node"></wxParseTemplate></block>
  12. </div>
  13. </template>
  14. <script>
  15. import HtmlToJson from './libs/html2json'
  16. import wxParseTemplate from './components/wxParseTemplate0'
  17. export default {
  18. name: 'wxParse',
  19. props: {
  20. loading: {
  21. type: Boolean,
  22. default: false
  23. },
  24. className: {
  25. type: String,
  26. default: ''
  27. },
  28. content: {
  29. type: String,
  30. default: ''
  31. },
  32. noData: {
  33. type: String,
  34. default: '<div style="color: red;">数据不能为空</div>'
  35. },
  36. endHandler: {
  37. type: Function,
  38. default: null
  39. },
  40. charsHandler: {
  41. type: Function,
  42. default: null
  43. },
  44. imageProp: {
  45. type: Object,
  46. default() {
  47. return {
  48. mode: 'aspectFit',
  49. padding: 0,
  50. lazyLoad: false,
  51. domain: ''
  52. }
  53. }
  54. }
  55. },
  56. components: {
  57. wxParseTemplate
  58. },
  59. data() {
  60. return {
  61. imageUrls: []
  62. }
  63. },
  64. computed: {
  65. nodes() {
  66. const { content, noData, imageProp, startHandler, endHandler, charsHandler } = this
  67. const parseData = content || noData
  68. const customHandler = {
  69. start: startHandler,
  70. end: endHandler,
  71. chars: charsHandler
  72. }
  73. const results = HtmlToJson(parseData, customHandler, imageProp, this)
  74. this.imageUrls = results.imageUrls
  75. console.log(results)
  76. return results.nodes
  77. }
  78. },
  79. methods: {
  80. startHandler(node) {
  81. node.attr.class = null
  82. node.attr.style = null
  83. },
  84. navigate(href, $event) {
  85. this.$emit('navigate', href, $event)
  86. },
  87. preview(src, $event) {
  88. if (!this.imageUrls.length) return
  89. wx.previewImage({
  90. current: src,
  91. urls: this.imageUrls
  92. })
  93. this.$emit('preview', src, $event)
  94. },
  95. removeImageUrl(src) {
  96. const { imageUrls } = this
  97. imageUrls.splice(imageUrls.indexOf(src), 1)
  98. }
  99. }
  100. }
  101. </script>