响应式

v-formly-v3 因为 Vue 3 的响应式,所以也支持响应式的在运行时设置表单项的所有属性。

代码演示

我们给输入框设置一个响应式的边框属性const hasBorder = ref(true);,当我们点击“设置边框”按钮时,他会 toggle 边框设置,这样我们就无需像 Vue 2 版本中的v-formly一样获取context上下文,然后通过使用上下文context来设置了,是不是很方便?

<template>
  <div>
    <v-formly-v3 ref="form" v-model="formData" :meta="meta"></v-formly-v3>
    <div class="btns">
      <a-button type="primary" @click="submit"> 设置边框 </a-button>
    </div>
  </div>
</template>

<script setup lang="ts">
import { ref } from "vue";
import type VFormly from "@/ant-design-vue/AFormly.vue";

const form = ref<null | InstanceType<typeof VFormly>>(null);
const hasBorder = ref(true);
const meta = {
  type: "object",
  properties: {
    string1: {
      title: "基本使用",
      type: "string",
      ui: {
        showRequired: true,
        placeholder: "Basic usage",
        bordered: hasBorder,
        errors: {
          required: "请输入",
        },
        change: (val: string) => console.log(val),
      },
    },
  },
  required: ["string1"],
};
let formData: any = ref({});

function submit() {
  hasBorder.value = !hasBorder.value;
}
</script>

<style scoped></style>
复制