大家的留言都看了,也是解答了我的一些疑问的 现在有这样一个问题,直接看代码吧
<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']
属性名的层级不是固定的,要实现属性双向绑定,保持层级关系
大家有什么好的办法么
|      1syntaxj      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 } ```这样? | 
|      2syntaxj      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 | 
|  |      3tool2d      2023-07-25 11:05:00 +08:00 我页面都是使用别的语言翻译成 JS 来运行的,很多地方都会调用 eval 。 你说 eval 有安全隐患,但我想说,你写个 chrome 插件就可以随便修改任意页面源代码。这种前端所谓的“安全性”,不是禁用几个函数,就能解决问题的。 | 
|      4lokitangl      2023-07-25 11:23:24 +08:00  2 var object = { 'a': [{ 'b': { 'c': 3 } }] }; _.get(object, 'a[0].b.c'); 搜一下 lodash 就知道了,你能想到的取值路径都能支持 | 
|  |      5bleeontheway      2023-07-25 11:30:13 +08:00 | 
|  |      6jazzg62      2023-07-25 13:42:47 +08:00 1.  不推荐不代表不能用,正确处理好异常就行。new Function 和 eval 类似,new Function 最大的好处就是比 eval 多了一层作用域,相对更安全些 2. 对这个字符串 split 下,然后遍历去获取参数就可以了,1 楼的就可以 | 
|  |      7zjsxwc      2023-07-25 13:49:54 +08:00 |