1/** 2 * Created by Liu.Jun on 2020/4/25 14:45. 3 */ 4 5import { defineComponent, h, resolveComponent as _resolveComponent } from 'vue'; 6 7export { 8 nodePath2ClassName, isRootNodePath, computedCurPath, getPathVal, path2prop 9} from './vueUtils'; 10 11// 内部使用 . ,配置数据key不能出现. 12const pathSeparator = '.'; 13 14// 删除当前path值 15export function deletePathVal(vueData, name) { 16 delete vueData[name]; 17} 18 19// 设置当前path值 20export function setPathVal(obj, path, value) { 21 const pathArr = path.split(pathSeparator); 22 for (let i = 0; i < pathArr.length; i += 1) { 23 if (pathArr.length - i < 2) { 24 // 倒数第一个数据 25 obj[pathArr[pathArr.length - 1]] = value; 26 break; 27 } 28 obj = obj[pathArr[i]]; 29 } 30} 31 32export function resolveComponent(component) { 33 if (typeof component === 'string') return _resolveComponent(component); 34 35 return component; 36} 37 38// 转换antdv、naive等非moduleValue的v-model组件 39export const modelValueComponent = (component, { 40 model = 'value' 41} = {}) => defineComponent({ 42 inheritAttrs: false, 43 setup(props, { attrs, slots }) { 44 return () => { 45 const { 46 modelValue: value, 47 'onUpdate:modelValue': onUpdateValue, 48 ...otherAttrs 49 } = attrs; 50 51 // eg: 'a-input' 52 return h(resolveComponent(component), { 53 [model]: value, 54 [`onUpdate:${model}`]: onUpdateValue, 55 ...otherAttrs 56 }, slots); 57 }; 58 } 59}); 60