登录
文档目录
图片名称

平铺型输入组件混入

2025-04-15 00:01:52(最后一次修改:2025-04-15 00:02:38)

何时使用

平铺型输入组件指的是组件直接渲染在属性名周围,不会有容器包裹。

源码展示

import { Component, Vue, Prop } from 'vue-property-decorator';
import { defaultNotEmpty } from '.';
import { isEqual } from 'lodash';
@Component
export class PropertyComponentBase extends Vue {
  @Prop({ default: false })
  disabled!: boolean;

  @Prop()
  defaultValue!: any;

  @Prop()
  value!: any;

  @Prop()
  maxLength!: number;

  @Prop()
  validError!: boolean;

  @Prop()
  title!: boolean;

  @Prop()
  getValueValidateErrorMessage!: Function;

  @Prop()
  isNotEmpty!: any;

  //是否展示错误文案
  @Prop()
  showErrorText!: boolean;

  @Prop()
  emptyErrorText!: string;

  //当前处于批量设计模式,批量设计下某些组件要更换渲染逻辑
  @Prop()
  batchMode!: boolean;

  get errorText() {
    if (!this.showErrorText) {
      return '';
    }

    if (this.validError) {
      return this.requiredErrorText || this.valuePatternErrorText;
    } else {
      return this.valuePatternErrorText;
    }
  }

  get requiredErrorText() {
    const emptyErrorText = this.emptyErrorText || `${this.title}不能为空`;
    if (typeof this.isNotEmpty === 'function' && !this.isNotEmpty(this.value)) {
      return emptyErrorText;
    } else if (!this.isNotEmpty && !defaultNotEmpty(this.value)) {
      return emptyErrorText;
    }
    return '';
  }

  get valuePatternErrorText() {
    if (
      typeof this.getValueValidateErrorMessage === 'function' &&
      this.getValueValidateErrorMessage({ value: this.value })
    ) {
      return this.getValueValidateErrorMessage({ value: this.value });
    } else {
      return '';
    }
  }

  mounted() {
    if (
      this.defaultValue !== undefined &&
      !isEqual(this.value, this.defaultValue)
    ) {
      //初始值的赋值只有在默认值与当前值不相等时才能进行,不然可能引发一些无用的监听逻辑
      if (this.isNotEmpty && typeof this.isNotEmpty === 'function') {
        if (!this.isNotEmpty(this.value)) {
          this.onValueChange(this.defaultValue);
        }
      } else if (!defaultNotEmpty(this.value)) {
        this.onValueChange(this.defaultValue);
      }
    }
  }

  onValueChange(newVal) {
    this.$emit('change', newVal);
  }

  //将数据保存在controller上,做缓存
  saveCacheData(key, value) {
    this.$emit('save', key, value);
  }

  otherValueChange(key, value) {
    this.$emit('otherValueChange', key, value);
  }

  //触发一次初始化的propertyChange事件
  initPropertyChange() {
    this.$emit('initPropertyChange');
  }
}

属性说明

属性名

说明

属性值类型

disabled

是否禁用,某些组件禁用态有不同的展示形式

boolean

defaultValue

值为空时使用到的默认值

any

value

any

maxLength

最大长度

number

validError

属性值校验状态

boolean

title

属性标题

string

getValueValidateErrorMessage

获取校验失败状态下的失败文案的函数

function

isNotEmpty

判断值不为空的函数

function

showErrorText

是否显示错误文案

boolean

emptyErrorText

错误显示文案

string

batchMode

是否开启批量模式,批量模式下组件展示可能发生变化

boolean

errorText

属性校验错误文案

string

函数说明

函数名

说明

参数

onValueChange

属性值改变,向外界传值函数

新的属性值

saveCacheValue

将中间值保留在controller上,刷新会被清空

保存的key,保存的value

otherValueChange

非controller直接绑定的属性值改变,不会触发subscribtion

目标属性key,新的目标属性值

initPropertyChange

触发一次初始化的propertyChange事件


  • 没有用(0

本文链接:https://open.hetusaas.com/?id=29

图片名称

网友评论

图片名称