大家的留言都看了,也是解答了我的一些疑问的 现在有这样一个问题,直接看代码吧
<el-switch v-model="form['delivery']['value']" />
data() {
return {
form: {
delivery: {
value: false
}
}
}
}
methods: {
onSubmit() {
console.log(this.form)
}
}
打印结果是有层级的对象:
{ delivery: {value: true}}
假如我从前面一个组件传过来一个属性名 'delivery.value', 我怎么把这个'delivery.value' 转换成form['delivery']['value']
属性名的层级不是固定的,要实现属性双向绑定,保持层级关系
大家有什么好的办法么
1
syntaxj 2023-07-25 10:56:30 +08:00
```
function readO(str,o) { let strArr = str.split('.') let current = o while(strArr.length) { let key = strArr.shift() current = current[key] } return current } ```这样? |
2
syntaxj 2023-07-25 11:01:13 +08:00
@syntaxj 对于 1 vue 源码里的执行是通过 new Function 的 https://github.com/search?q=repo%3Avuejs%2Fcore%20new%20Function&type=code
|
3
tool2d 2023-07-25 11:05:00 +08:00
我页面都是使用别的语言翻译成 JS 来运行的,很多地方都会调用 eval 。
你说 eval 有安全隐患,但我想说,你写个 chrome 插件就可以随便修改任意页面源代码。这种前端所谓的“安全性”,不是禁用几个函数,就能解决问题的。 |
4
lokitangl 2023-07-25 11:23:24 +08:00 2
var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.get(object, 'a[0].b.c'); 搜一下 lodash 就知道了,你能想到的取值路径都能支持 |
5
bleeontheway 2023-07-25 11:30:13 +08:00
|
6
jazzg62 2023-07-25 13:42:47 +08:00
1. 不推荐不代表不能用,正确处理好异常就行。new Function 和 eval 类似,new Function 最大的好处就是比 eval 多了一层作用域,相对更安全些
2. 对这个字符串 split 下,然后遍历去获取参数就可以了,1 楼的就可以 |
7
zjsxwc 2023-07-25 13:49:54 +08:00
|