Skip to content

属性配置

为了避免重复配置属性、默认属性不统一等问题,框架支持配置组件属性,推荐在全局配置好组件的默认属性,可以有效统一页面风格并提高开发效率。

全局配置

通过应用的provide方法可以进行组件属性的全局配置,它将作用于应用的所有子组件及后代组件。

ts
import { createApp } from 'vue';
import {
  DATA_DESCRIPTIONS_KEY,
  DATA_FORM_KEY,
  DATA_PAGINATION_KEY,
  DATA_TABLE_KEY,
  DICT_SELECT_KEY,
  GRID_CASCADER_KEY,
} from 'liv-web';
import App from './src/App.vue';

const app = createApp(App);

// 字典选择器组件属性全局配置
app.provide(DICT_SELECT_KEY, {
  placeholder: '请选择字典',
  idKey: 'dictId',
  labelKey: 'dictName',
  valueKey: 'dictCode',
  // others props...
});

// 网格选择器组件属性全局配置
app.provide(GRID_CASCADER_KEY, {
  placeholder: '请选择网格',
  clearable: true,
  showAllLevels: true,
  collapseTags: true,
  collapseTagsTooltip: true,
  separator: '/',
  props: {
    id: 'gridId',
    label: 'gridName',
    value: 'gridCode',
    leaf: 'leaf',
    children: 'children',
    disabled: 'disabled',
  },
  // others props...
});

// 数据表格组件属性全局配置
app.provide(DATA_TABLE_KEY, {
  showButtonCount: 3,
  border: false,
  stripe: true,
  headerCellStyle: {
    backgroundColor: '#FAFAFA',
  },
  // others props...
});

// 数据分页组件属性全局配置
app.provide(DATA_PAGINATION_KEY, {
  currentKey: 'current',
  sizeKey: 'size',
  // others props...
});

// 数据表单组件属性全局配置
app.provide(DATA_FORM_KEY, {
  labelWidth: 'auto',
  labelPosition: 'right',
  // others props...
});

// 数据描述项列表属性全局配置
app.provide(DATA_DESCRIPTIONS_KEY, {
  border: true,
  column: 2,
  // others props...
});

// 全局配置更多组件属性...

更多可配置组件及属性请参考组件文档

局部配置

在组件中使用provide可以进行局部配置,它将作用于该组件的所有子组件及后代组件。

vue
<template>
  <liv-data-table :data="data" :fields="fields"> </liv-data-table>
  <router-view></router-view>
</template>

<script lang="ts" setup>
import { ref, provide } from 'vue';
import { DATA_TABLE_KEY, type DataTableFields } from 'liv-web';

// 将作用于当前组件的所有子组件及后代组件
provide(DATA_TABLE_KEY, {
  showButtonCount: 2,
  border: true,
  stripe: false,
  // others props...
});

interface TableData {
  // ...
}

const data = ref<TableData[]>([
  // ...
]);

const fields: DataTableFields<TableData> = [
  // ...
];
</script>