问题:被@ObservedV2和@Trace标记的类及字段,字段名称都加上了“__ob_”开头的字段

如下类:

@ObservedV2
export class BizPriceEntity{
  @Trace disabled:boolean = true // true已停用 false未停用
  @Trace value:string = "" // 价格名称
  @Trace code:string = "" // 价格code
}

使用了@ObservedV2字段,目的是为了可以同步ui

但是因为v2装饰器的愿意,系统给@Trace修饰的字段名称都加上了“__ob_”开头的字段

若某个提交接口需要提交该类的对象,则会把__ob_字段一起提交,

所以需要在提交前对象数据做一个处理,处理如下

 static convertKeysToCamelCase(obj: ESObject | ESObject[]): ESObject | ESObject[] {
    // 处理数组类型
    if (Array.isArray(obj)) {
      const newArray: ESObject[] = []
      obj.forEach((item: ESObject, key) => {
        newArray[key] = HMUtils.convertKeysToCamelCase(item);
      })
      return newArray
    }

    // 处理普通对象
    if (obj && typeof obj === 'object') {
      const newObj: ESObject = {}
      Object.keys(obj).forEach((key) => {
        if (obj.hasOwnProperty(key)) {
          const newKey = key.replace(/(__ob_)/g, '')
          newObj[newKey] = HMUtils.convertKeysToCamelCase(obj[key])
        }
      })
      return newObj
    }
    // 原始值直接返回
    return obj
  }

 

posted @ 2025-09-04 15:18  听着music睡  阅读(4)  评论(0)    收藏  举报