123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <template>
- <!--判断是否是标签节点-->
- <block v-if="node.node === 'element'">
- <!--button类型-->
- <button v-if="node.tag === 'button'" type="default" size="mini" :class="node.classStr" :style="node.styleStr">
- <we-parse-template-1 :node="node" />
- </button>
-
- <!--a类型-->
- <view v-else-if="node.tag === 'a'" @click="wxParseATap(node.attr,$event)" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
- <block v-for="(item, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="item" :parent-node="node"/>
- </block>
- </view>
-
- <!--div类型-->
- <view v-else-if="node.tag === 'div'" :class="node.classStr" :style="node.styleStr">
- <block v-for="(item, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="item" :parent-node="node"/>
- </block>
- </view>
-
- <!--span类型-->
- <view v-else-if="node.tag === 'span'" :class="node.classStr" :style="node.styleStr">
- <block v-for="(item, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="item" :parent-node="node"/>
- </block>
- </view>
-
- <!--p类型-->
- <view v-else-if="node.tag === 'p'" :class="node.classStr" :style="node.styleStr">
- <block v-for="(item, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="item" :parent-node="node"/>
- </block>
- </view>
-
- <!--ul类型-->
- <view v-else-if="node.tag === 'ul'" :class="node.classStr" :style="node.styleStr">
- <block v-for="(item, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="item" :parent-node="node"/>
- </block>
- </view>
-
- <!--li类型-->
- <view v-else-if="node.tag === 'li'" :class="node.classStr" :style="node.styleStr">
- <block v-for="(item, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="item" :parent-node="node"/>
- </block>
- </view>
-
- <!--table类型-->
- <wx-parse-table v-else-if="node.tag === 'table'" :style="node.styleStr" :node="node" />
-
- <!--br类型-->
- <text v-else-if="node.tag === 'br'">\n</text>
- <!--video类型-->
- <wx-parse-video :node="node" v-else-if="node.tag === 'video'"/>
-
- <!--audio类型-->
- <wx-parse-audio :node="node" v-else-if="node.tag === 'audio'"/>
-
- <!--img类型-->
- <wx-parse-img :parent-node="parentNode" :node="node" v-else-if="node.tag === 'img'" :style="node.styleStr"/>
-
- <!-- strong标签 -->
- <view v-else-if="node.tag === 'strong'" style="font-weight: bold;display: inline;">
- <block v-for="(item, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="item" :parent-node="node"/>
- </block>
- </view>
-
- <!-- em标签 -->
- <view v-else-if="node.tag === 'em'" style="font-style: italic">
- <block v-for="(node, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="node" />
- </block>
- </view>
-
- <!-- section标签 -->
- <view v-else-if="node.tag === 'section'" >
- <block v-for="(node, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="node" />
- </block>
- </view>
-
- <!--其他标签-->
- <view v-else :class="node.classStr" :style="node.styleStr">
- <block v-for="(item, index) of node.nodes" :key="index">
- <we-parse-template-1 :node="item" :parent-node="node"/>
- </block>
- </view>
- </block>
-
- <!--判断是否是文本节点-->
- <block v-else-if="node.node === 'text'">
- <text>{{node.text}}</text>
- </block>
- </template>
- <script>
-
- import wxParseTemplate from './wxParseTemplate1';
- import wxParseImg from './wxParseImg';
- import wxParseVideo from './wxParseVideo';
- import wxParseAudio from './wxParseAudio';
- import wxParseTable from './wxParseTable';
- export default {
- name: 'wxParseTemplate0',
- props: {
- node: {
- type: Object,
- default() {
- return {}
- }
- },
- parentNode: {}
- },
- components: {
- 'we-parse-template-1': wxParseTemplate,
- wxParseImg,
- wxParseVideo,
- wxParseAudio,
- wxParseTable
- },
- methods: {
- wxParseATap(attr,e) {
- const {
- href
- } = e.currentTarget.dataset;// TODO currentTarget才有dataset
- if (!href) return;
- let parent = this.$parent;
- while(!parent.preview || typeof parent.preview !== 'function') {// TODO 遍历获取父节点执行方法
- parent = parent.$parent;
- }
- parent.navigate(href, e, attr);
- },
- }
- };
- </script>
|