这是上一个开发遗留的问题,下面两个图片红线区域的数据web端可以显示文字,但是移动端他那边之前的解释是:小程序不能new function,是引用不了;所以不能显示格式化后的内容,所以想请问一下小程序有什么方法来显示格式化的内容吗。
for (let i = 0; i < this.measureArr.length; i++) {
this.realValueArr.map(item => {
if (this.measureArr[i].measureId == item.measureId) {
if (this.measureArr[i].sampleTime !== item.sampleTime) this.measureArr[i]
.sampleTime = item.sampleTime;
if (this.measureArr[i].sampleValue !== item.sampleValue) this.measureArr[i]
.sampleValue = item.sampleValue;
}
});
}
this.Info = this.measureArr;
console.log(JSON.parse(JSON.stringify(this.Info)));
let printf =this.Info[8].printf;
console.log("需格式化内容..", JSON.parse(printf));
},
这个printf就是我需要格式化的内容现在是第二张图片所示
这个是我同事给我的格式化代码但是他是使用了new function导致小程序这边就会报错
/*
* 格式化显示
* val: 采样值
* fmt: 格式化内容
*/
export function formatDisplay(val, fmt){
console.log("val",val);
console.log("fmt",fmt);
if(val === undefined || val === null || val === '') return null;
if(!fmt) return val;
if(fmt.type == 0){
if(!fmt.script){
return val
}
// 脚本模式
if(fmt.script.indexOf('\br') != -1 || fmt.script.indexOf('\\br') != -1) {
fmt.script = fmt.script.replace(new RegExp('\\\\br', 'gm'), '<br />')
}
var func = new Function("$val", fmt.script);
var state = func(+val);
return state || val;
}
else if(fmt.type == 1){
// 保留小数位
return (val*1).toFixed(fmt.scale);
}
else if(fmt.type == 2){
// 按位解析
var state = '';
var split = fmt.split || ",";
for(var bit in fmt){
if(!isNaN(bit)){
var x = Math.pow(2, bit);
if((val&x) == x){
if(state == '')
state = fmt[bit];
else
state += split + fmt[bit];
}
}
}
return state || fmt["default"] || val;
}
else if(fmt.type == 3){
// 按值解析
return fmt[String(val)] || fmt["default"] || val;
}
else if(fmt.type == 4){
// 拆分显示
var state = '';
var split = fmt.split || ",";
var items = fmt.items;
if(Array.isArray(items) && items.length){
for(var i = 0; i < items.length; i++){
var item = items[i];
var from = item.from;
var to = item.to || from;
var x = Math.pow(2,to-from+1)-1;
var v = val>>from&x;
if(item.gain) v *= item.gain;
if(item.scale) v = v.toFixed(item.scale);
var unit = item.unit || '';
var name = item.name ? item.name + ':' : '';
if(state == '')
state = `${name}${v}${unit}`;
else
state += split + `${name}${v}${unit}`;
}
}
return state || val;
}
throw "无法识别类型:"+fmt.type;
}