案例一:
有这样的需求,模态框里的表单控件在新增时,下拉框绑定的是对象,而后端需要的是将对象拆成两个字段;在修改时,会有一个回显阶段,然后可以在回显的基础上做控件值得修改,但是回显的也是一个对象分为两个字段的形式,那么这种情况下就要为每个控件自定义标识符,用来区别控件值是否修改,判断之后再决定是否数据重组。

按照这个逻辑去处理应该是能走向胜利的,but还是出了一个bug

那就是在每次点击提交时,只要添加了标识符的控件,在成功提交一次后,做第二次提交时控件值都会自动清空(在点击提交按钮之前,控件绑定值及界面显示都一切正常,在点击的一瞬间绑定值清空且界面显示也没有值了),导致提交的参数不正确,经过debuger之后发现,因为用了标记做判断来重组数据,但是忘记了一个重要的步骤就是每次弹出修改框时都该重置标记为faulse,不然第二次进来就算不修改时,标记已经被第一次改为了true,会直接走重组数据,那么在没有修改下拉框的情况下重组数据就会出现问题,因为下拉框v-model绑定对象时,其绑定值只会在select发生变化时才是对象,没修改时是字符串,所以置空问题是由于将v-model为字符串的下拉框拿来当成对象重组数据,造成null值。

合法的用户自定义标识符python 用户自定义标识符举例_vue标识符


合法的用户自定义标识符python 用户自定义标识符举例_控件_02


在点击修改按钮弹出模态框时就重置标识符,在点击提交按钮发送请求前根据标识符判断是否数据重组。案例二:

合法的用户自定义标识符python 用户自定义标识符举例_控件_03


需求是,图中的每个场景都是后端数据遍历出来的,每个场景就是一个对象;然后每个场景都有展开/收缩和开启/关闭功能,由于其他需要,每个场景应有自己的loading。方案呢也简单,vue数据驱动嘛,展开/收缩可以用动态class来搞定,loading呢直接用UI库组件就行,但是问题来了,场景是遍历出来的,那就不能在data里去定义:class和loading的变量,会造成所有场景公用相同变量,那么要是后端返回的场景对象里都有对应的属性来控制就好了,可惜没有。。。

那么我们就自己造,自定义

合法的用户自定义标识符python 用户自定义标识符举例_下拉框_04


把拿回来的数组遍历然后在每个对象里用vue.合法的用户自定义标识符python 用户自定义标识符举例_下拉框_05set而不是Object.xx