You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

100 line
2.4 KiB

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