前端两三问(201901018)

1、iview table 自定义表头

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<Table :columns="tableColumns" :data="searchResults" v-if="!!searchResults" stripe border></Table>

tableColumns: [
{
title: "订单状态",
renderHeader: (h, row) => {
return h('Select', {
props: {
placeholder: '订单状态',
value: this.queryData.status
},
style: {
width: '150px',
display: 'inline-block'
}
}, [
list.map((val) => {
return h('Option', {
props: {
value: val.value,
label: val.text
},
nativeOn: {
click: () => {
this.selectOrder(val);
}
}
},val.text)
})
])
},
]

2、js 正则限制小数点后一位

1
2
3
4
5
6
7
8
9
const reg = /^[0-9]+([.]{1}[0-9]{1})?$/

let val = 1.223
reg.test(val)
false

let v = 1.10000
reg.test(v)
true

3、Object.assign 失效还是会修改复制的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Object.assign 用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)

猜测:
因为源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。

结果:
const obj = {
a: {
b:1
}
};
const objA = Object.assign({}, obj);
objA.a.b = 2;
console.log(objA.a.b) // 2
console.log(obj.a.b) // 2

解决:
1、深拷贝
2、还在寻找中

4、ios系统下new Date() 日期返回 NAN

1
2
3
4
5
6
7
原因:
Date('2019-10-16') 返回时间戳在正常情况下都可以, 但是 ios 中 new Date('2019-10-16')识别不了里面的 '-',所以导致返回NAN

解决:

1、返回处理好的时间
2、将 '-' 通过 replace() 替换为 '/' '2019-10-16'.replace(/-/g, '/') => '2019/10/16'