wxParseTemplate11.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <template>
  2. <view>
  3. <!--判断是否是标签节点-->
  4. <block v-if="node.node == 'element'">
  5. <!--button类型-->
  6. <block v-if="node.tag == 'button'">
  7. <button type="default" size="mini">
  8. </button>
  9. </block>
  10. <!--li类型-->
  11. <block v-else-if="node.tag == 'li'">
  12. <view :class="node.classStr" :style="node.styleStr">
  13. {{node.text}}
  14. </view>
  15. </block>
  16. <!--video类型-->
  17. <block v-else-if="node.tag == 'video'">
  18. <wx-parse-video :node="node" />
  19. </block>
  20. <!--audio类型-->
  21. <block v-else-if="node.tag == 'audio'">
  22. <wx-parse-audio :node="node" />
  23. </block>
  24. <!--img类型-->
  25. <block v-else-if="node.tag == 'img'">
  26. <wx-parse-img :node="node" />
  27. </block>
  28. <!--a类型-->
  29. <block v-else-if="node.tag == 'a'">
  30. <view @click="wxParseATap" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
  31. {{node.text}}
  32. </view>
  33. </block>
  34. <!--br类型-->
  35. <block v-else-if="node.tag == 'br'">
  36. <text>\n</text>
  37. </block>
  38. <!--其他标签-->
  39. <block v-else>
  40. <view :class="node.classStr" :style="node.styleStr">
  41. {{node.text}}
  42. </view>
  43. </block>
  44. </block>
  45. <!--判断是否是文本节点-->
  46. <block v-else-if="node.node == 'text'">{{node.text}}</block>
  47. </view>
  48. </template>
  49. <script>
  50. import wxParseImg from './wxParseImg';
  51. import wxParseVideo from './wxParseVideo';
  52. import wxParseAudio from './wxParseAudio';
  53. export default {
  54. name: 'wxParseTemplate11',
  55. props: {
  56. node: {},
  57. },
  58. components: {
  59. wxParseImg,
  60. wxParseVideo,
  61. wxParseAudio,
  62. },
  63. methods: {
  64. wxParseATap(e) {
  65. const {
  66. href
  67. } = e.currentTarget.dataset;
  68. if (!href) return;
  69. let parent = this.$parent;
  70. while(!parent.preview || typeof parent.preview !== 'function') {
  71. parent = parent.$parent;
  72. }
  73. parent.navigate(href, e);
  74. },
  75. },
  76. };
  77. </script>