From d9fcffb0930fda94d27a60a050964b0d96266c13 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Wed, 07 Jul 2021 19:40:09 +0800 Subject: [PATCH] 修复,页面第一次进入关闭后,二次再进入页面,数据出现遗留现象的问题 --- bases/Pilot.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 46 insertions(+), 5 deletions(-) diff --git a/bases/Pilot.js b/bases/Pilot.js index bc09f48..babc9de 100644 --- a/bases/Pilot.js +++ b/bases/Pilot.js @@ -3,6 +3,10 @@ * @author Tevin */ +import { Fetcher } from './Fetcher'; +import { Tools } from '@components/common/Tools'; +import project from '@project'; + export class Pilot { constructor() { @@ -16,20 +20,31 @@ const options = { methods: {}, }; - Object.getOwnPropertyNames(Object.getPrototypeOf(this)).forEach(name => { + const names = []; + // 实例本身的字段 + Object.getOwnPropertyNames(this).forEach(name => names.push(name)); + // 类的字段 + Object.getOwnPropertyNames(Object.getPrototypeOf(this)).forEach(name => names.push(name)); + // 传递 + names.forEach(name => { + // 构造器忽略,如果存在属性 $methods 也忽略 if (name === 'constructor' || name === '$methods') { return; } if (/^\$/.test(name)) { if (name === '$data' && typeof dataAdd !== 'undefined') { - // 当有传data值进来,初始值必须带data中的字段 - const dataOrig = this.$data(); + // 转换 dataAdd 中 assets 属性下的图片地址值 + if (typeof dataAdd.assets !== 'undefined') { + dataAdd.assets = Pilot.transAssets(dataAdd.assets); + } options.data = () => { + // 当有传data值进来,初始值必须带data中的字段 + const dataOrig = this.$data(); return { ...dataOrig, ...dataAdd, - } - } + }; + }; } else { options[name.replace('$', '')] = this[name]; } @@ -40,4 +55,30 @@ return options; } + /** + * 转换静态图片引用 + * @param assets + * @return {{}} + */ + static transAssets(assets = {}) { + const assets2 = {}; + Object.keys(assets).forEach(key => { + let asset = ''; + if (assets[key].indexOf('assets') >= 0) { + asset = assets[key].split('assets')[1]; + } else { + asset = assets[key].replace(/^[.\/\\]*/, '/'); + } + // 网页 + if (process.env.TARO_ENV === 'h5') { + assets2[key] = project.host.assetsPath + asset; + } + // 小程序 + else if (process.env.TARO_ENV === 'weapp') { + assets2[key] = Fetcher.host + project.host.assetsPath + asset; + } + }); + return assets2; + } + } \ No newline at end of file -- Gitblit v1.9.1