68 lines
2.0 KiB
JavaScript
68 lines
2.0 KiB
JavaScript
|
|
/*
|
|||
|
|
* @Author: Jin Biao
|
|||
|
|
* @Date: 2022-04-20 08:06:39
|
|||
|
|
* @LastEditTime: 2022-04-20 08:50:31
|
|||
|
|
* @Description:
|
|||
|
|
*/
|
|||
|
|
/**
|
|||
|
|
* 如果你想删除本文件,请先确认它使用的范围,感谢合作~
|
|||
|
|
*
|
|||
|
|
* author: 375890534@qq.com
|
|||
|
|
*/
|
|||
|
|
export default {
|
|||
|
|
methods: {
|
|||
|
|
//setData polyfill 勿删!!! (用于转换后的uniapp的项目能直接使用this.setData()函数)
|
|||
|
|
setData: function (obj, callback) {
|
|||
|
|
let that = this;
|
|||
|
|
const handleData = (tepData, tepKey, afterKey) => {
|
|||
|
|
var tepData2 = tepData;
|
|||
|
|
tepKey = tepKey.split(".");
|
|||
|
|
tepKey.forEach((item) => {
|
|||
|
|
if (tepData[item] === null || tepData[item] === undefined) {
|
|||
|
|
let reg = /^[0-9]+$/;
|
|||
|
|
tepData[item] = reg.test(afterKey) ? [] : {};
|
|||
|
|
tepData2 = tepData[item];
|
|||
|
|
} else {
|
|||
|
|
tepData2 = tepData[item];
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
return tepData2;
|
|||
|
|
};
|
|||
|
|
const isFn = function (value) {
|
|||
|
|
return typeof value == "function" || false;
|
|||
|
|
};
|
|||
|
|
Object.keys(obj).forEach(function (key) {
|
|||
|
|
let val = obj[key];
|
|||
|
|
key = key.replace(/\]/g, "").replace(/\[/g, ".");
|
|||
|
|
let front, after;
|
|||
|
|
let index_after = key.lastIndexOf(".");
|
|||
|
|
if (index_after != -1) {
|
|||
|
|
after = key.slice(index_after + 1);
|
|||
|
|
front = handleData(that, key.slice(0, index_after), after);
|
|||
|
|
} else {
|
|||
|
|
after = key;
|
|||
|
|
front = that;
|
|||
|
|
}
|
|||
|
|
if (front.$data && front.$data[after] === undefined) {
|
|||
|
|
Object.defineProperty(front, after, {
|
|||
|
|
get() {
|
|||
|
|
return front.$data[after];
|
|||
|
|
},
|
|||
|
|
set(newValue) {
|
|||
|
|
front.$data[after] = newValue;
|
|||
|
|
that.hasOwnProperty("$forceUpdate") && that.$forceUpdate();
|
|||
|
|
},
|
|||
|
|
enumerable: true,
|
|||
|
|
configurable: true,
|
|||
|
|
});
|
|||
|
|
front[after] = val;
|
|||
|
|
} else {
|
|||
|
|
that.$set(front, after, val);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
// this.$forceUpdate();
|
|||
|
|
isFn(callback) && this.$nextTick(callback);
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
};
|