首页 > 其他分享 >[Vue Form] Basic Select component

[Vue Form] Basic Select component

时间:2024-12-03 15:32:30浏览次数:6  
标签:Vue String default modelValue component label defineModel type Select

<template>
  <label v-if="label">{{ label }}</label>
  <select
    class="field"
    :value="modelValue"
    v-bind="{
      ...$attrs,
      onChange: ($event) => { $emit('update:modelValue', $event.target.value) }
    }"
  >
    <option
      v-for="option in options"
      :value="option"
      :key="option"
      :selected="option === modelValue"
    >{{ option }}</option>
  </select>
</template>

<script>
export default {
  props: {
    label: {
      type: String,
      default: ''
    },
    modelValue: {
      type: [String, Number],
      default: ''
    },
    options: {
      type: Array,
      required: true
    }
  }
}
</script>

 

Rewrite in Composeable API

<template>
  <label v-if="label">{{ label }}</label>
  <select
    class="field"
    v-model="modelValue"
    v-bind="$attrs"
  >
    <option
      v-for="option in options"
      :value="option"
      :key="option"
    >
      {{ option }}
    </option>
  </select>
</template>

<script setup>
import { defineProps, defineModel } from 'vue';

// Define static props
const { label, options } = defineProps({
  label: {
    type: String,
    default: ''
  },
  options: {
    type: Array,
    required: true
  }
});

// Define modelValue using defineModel for two-way binding
const modelValue = defineModel({
  type: [String, Number],
  default: ''
});
</script>

 

Usage from parent component:

<template>
  <CustomSelect
    v-model="selectedOption"
    :options="['Option 1', 'Option 2', 'Option 3']"
    label="Choose an option:"
  />
</template>

<script setup>
import { ref } from 'vue';
import CustomSelect from './CustomSelect.vue';

const selectedOption = ref('');
</script>

 

标签:Vue,String,default,modelValue,component,label,defineModel,type,Select
From: https://www.cnblogs.com/Answer1215/p/18584221

相关文章

  • springboot基于Vue的MES生产制造执行系统论文.doc
    系统简介当下,如果还依然使用纸质文档来记录并且管理相关信息,可能会出现很多问题,比如原始文件的丢失,因为采用纸质文档,很容易受潮或者怕火,不容易备份,需要花费大量的人员和资金来管理用纸质文档存储的信息,最重要的是数据出现问题寻找起来很麻烦,并且修改也困难,如果还这样操作会......
  • Vue3可以不用Pinia了?
    目录前言为什么选择组合式API进行状态管理案例Demo结论 前言随着Vue3的发布,开发者们获得了许多新的特性和改进,其中之一就是对组合式API(CompositionAPI)的支持。这个API允许以更灵活和逻辑化的方式组织代码,同时为状态管理和逻辑复用提供了强大的支持。在本文中,我们将......
  • uniapp实现加密Token并在每次请求前动态更新(vue、微信小程序、原生js也通用!)
    导语:在Web开发中,Token作为一种身份验证的机制,被广泛应用于前后端交互过程中。本文将为大家介绍如何在每次请求前动态设置加密的Token,并在请求一次后使Token值加1(或其他动态改变的逻辑),从而提高系统的安全性。一、背景知识Token简介 Token是一种身份验证的令牌,通常由服务器......
  • Vue3.5新版本特性一览-数组操作10倍性能提升+响应式属性解构+自定义组件优化+ssr水合
    Vue团队欣喜地宣布,Vue3.5(代号TengenToppaGurrenLagann)于9月初发布!本次小版本更新并未引入任何破坏性更改,带来了诸多内部优化以及新功能。在这篇文章中,我们将重点介绍一些新特性和改进。如需了解全部更新内容,请参阅GitHub上的完整更新日志。最近突然想整理一些前......
  • 用Java和Vue写的个人股票分析系统
    轻量级股票数据中台简单易用的数据中台,服务于韭皇的可自控应用,方便二次开发;无复杂数据库依赖,启动即可得,追求至简,方便韭皇部署;外部接口可扩展,与核心功能隔离,可快速切换服务使用场景搭建自己的选股平台,分析数据私有化保存,二次开发私有化指标,自定义选股策略;当时编写程序的初......
  • 中药分类管理系统|Java|SSM|VUE| 前后端分离
    【重要1⃣️】前后端源码+万字文档+部署文档【重要2⃣️】正版源码有问题包售后             【包含内容】【一】项目提供非常完整的源码注释【二】相关技术栈文档【三】源码讲解视频                    ......
  • 冷冻仓库管理系统|Java|SSM|VUE| 前后端分离
    【重要1⃣️】前后端源码+万字文档+部署文档【重要2⃣️】正版源码有问题包售后             【包含内容】【一】项目提供非常完整的源码注释【二】相关技术栈文档【三】源码讲解视频                    ......
  • vue基础之6:计算属性、姓名案例、简写计算属性
    欢迎来到“雪碧聊技术”CSDN博客!在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目......
  • 如何理解 select、poll 和 epoll (大白话版)
    用生活中的场景类比,可以更容易理解select、poll和epoll的工作原理和区别。1.select:固定值班表,逐个检查想象你是一个前台管理员,有一张固定的名单,上面列了100个人的名字(比如说住户)。你需要每隔一段时间检查这100个人是否需要服务(比如是否需要收信件)。怎么做?你一......
  • Y20030035 基于微信小程序+Java+SpringBoot+vue+maven+mysql+的车位租赁管理系统设计
    车位租赁管理系统1.项目描概述2.开发的背景与意义3.功能结构4.界面展示5.源码获取1.项目描概述在移动互联网的迅速发展推进下,微信成了人们生活中不可缺少的一款信息交流和沟通平台。而微信小程序的推出,便得现在人们在日常生活中更多的是通过手机微信平台进行安装各......