Vue组件上使用v-model之单选框

先给大家介绍下Vue组件上使用v-model之单选框的实例代码。

子组件内容:

<template>
  <div>
    <input
      type="radio"
      :id="valueName"
      :value="valueName"
      :checked="picked === valueName"
      :picked="picked"
      @click="$emit('change', $event.target.value)"
    />
    <label :for="valueName">{{ valueName }}</label>
  </div>
</template>

<script>
export default {
  props: ["picked", "valueName"],
  model: {
    prop: "picked",
    event: "change",
  },
  computed: {},
  methods: {},
};
</script>

<style>
</style>

父组件内容:

<template>
  <div>
    <child-radio
      v-for="valueName in valueNames"
      :key="valueName"
      v-model="picked"
      :valueName="valueName"
    ></child-radio>
    显示父组件单选的内容:{{ picked }} -->
  </div>
</template>

<script>
import ChildRadio from "./ChildRadio.vue";
export default {
  components: { ChildRadio },
  data() {
    return {
      picked: "", //
      valueNames: ["One", "Two", "Three"],
    };
  },
};
</script>

<style>
</style>

vue组件v-model

vue中数据数据流向

vue中数据流向是单向的,也就是说我们不能直接修改props中的值所以我们都会

<template>
    <div>
        <Renderer :data='data' @updateValue='updateValue'/>
    </div>
</template>
<script setup>
	我这里使用unplugin-auto-import所以不必导入ref
    import  Renderer from  "./components/Render.vue"
    let  data = ref('0');
    这样的方式修改父组件给我们传递的值
    const  updateValue = (value) =>{
		data.value = value;
	}
</script>
<template>
    <div>
        <input type="text" v-model="content" @input="loadValue ">
    </div>
</template>

<script setup>
	const  emit =  defineEmits();
	let  content =  ref('');
	const  loadValue = () => {
		emit('updateValue', content.value);
	}
</script>

因为这中操作太频繁了所以vue新增v-model:data='data‘这种方式修改父组件数据

<template>
    <div>
    	 第一个data是,如果需要修改,修改当前组件的那个值
        <Renderer v-model:data="data"/>
    </div>
</template>

<script setup>
    import  Renderer from  "./components/Render.vue"
    let  data = ref('0');
</script>
<template>
    <div>
        <input type="text" v-model="content" @input="updateValue">
    </div>
</template>

<script setup>
	let  content = ref('');
	const  emit =  defineEmits();
	const  updateValue = ()=>{
	emit('update:data', content.value);
	}
</script>

现在v-model可以自定义修饰符

	//vue2提供的修饰符
	v-model.trim(去掉两端空格)
	v-model.number(只输入number)
	v-model.lazy(change事件触发)
<template>
    <div>
        <Renderer v-model:data.capitalize="data"/>
        {{data}}
    </div>
</template>

<script setup>
    import  Renderer from  "./components/Render.vue"
    let  data = ref('0');
</script>
<template>
    <div>
        <input type="text" v-model="content" @input="updateValue" />
    </div>
</template>

<script setup>
const props = defineProps({
    dataModifiers: Object
});
let content = ref('');
const emit = defineEmits();
const updateValue = () => {
    if (props.dataModifiers.capitalize) {
         content.value = content.value.charAt(0).toUpperCase() +  content.value.slice(1)
    }
    emit('update:data', content.value);
}
</script>

到此这篇关于Vue组件上使用v-model之单选框的文章就介绍到这了,更多相关Vue 使用v-model单选框内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue.js学习笔记之v-bind和v-on解析

    v-bind 指令用于响应地更新 HTML 特性 形式如:v-bind:href    缩写为    :href; v-on 指令用于监听DOM事件 形式如:v-on:click  缩写为 @click; <body> <div id="test"> <img v-bind:src="src"> <a v-bind:href="url" rel="external nofollow"

  • Vue v-model实现案例介绍

    目录 1. 概述 2. 使用方法 3. 案例 3.1 用户登录 3.2 todolist 3.3 实现单个复选框 3.4 实现多个复选框 3.5 实现复选框全选 3.6 单选和下拉 4. v-model修饰符 4.1 lazy 4.2 trim 4.3 number 5. 案例 5.1 购物车 5.2 购物车持久化 1. 概述 v-model 是 Vue 提供的一个语法糖,它是 value 值和事件的结合体,它会根据不同的表单项,来选择执行不同的事件.它的作用是,通过和表单元素绑定,实现双向数据

  • vue3 封装自定义组件v-model的示例

    首先要注意 vue3中 v-model 默认绑定的变量名变了,从原理的 value 改成了 modelValue,如果要改变变量的值,要执行一个事件 this.$emit("update:modelValue", value); <template> <div class="inline"> <input :type="password ? 'password' : 'text'" ref="input&q

  • Vue3 SFC 和 TSX 方式自定义组件实现 v-model的详细过程

    目录 1 v-model 1.1 理解 v-model 1.2 案例描述 1.3 编写样式 2 编写组件 2.1 实现思路 2.2 SFC(.vue)中的实现 2.3 TSX(.tsx)中的实现 3 使用组件 1 v-model 1.1 理解 v-model v-model 是 vue3 中的一个内置指令,很多表单元素都可以使用这个属性,如 input.checkbox 等,咱可以在自定义组件中实现 v-model.v-model 本质上是一个语法糖: 绑定父组件传递过来的 modelValue

  • Vue中的v-model,v-bind,v-on的区别解析

    目录 v-model v-bind(缩写为 : ) v-on(缩写为@) 总结 v-model v-model是进行动态双向绑定的(只能用在input, textarea, select上),以input为例,进行绑定后,vue对象中data的相应值会与input的输入同步变动. // HTML <input type="text" v-model="message"> new Vue({ data { message: ' ', //最开始messag

  • Vue3根据动态字段绑定v-model的操作代码

    目录 VUE动态绑定v-model变量(ui框架iview) 需求 UI框架使用的是iview 遇到的问题以及解决 因业务需要用到低代码,v-model绑定的是随机生成的 <template> <input type="text" v-model="form[key]"> <button @click="submit">提交</button> </template> <script

  • 详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on

    Vue.js的指令是以v-开头的,它们作用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性(attribute). Vue.js提供了一些常用的内置指令,如下: v-if指令 v-for指令 v-show指令 v-else指令 v-bind指令 v-on指令 1:v-if指令 v-if指令是条件渲染指令,它根据表达式的真假来删除和插入元素,它的基本语法如下: v-if="expression"

  • Vue组件上使用v-model之单选框

    先给大家介绍下Vue组件上使用v-model之单选框的实例代码. 子组件内容: <template> <div> <input type="radio" :id="valueName" :value="valueName" :checked="picked === valueName" :picked="picked" @click="$emit('change',

  • Vue 组件上的v-model双向绑定原理解析

    目录 组件上的v-model原理 v-model编译阶段 组件生成阶段 之前我们分析了Vue中v-model指令在普通表单元素上的使用原理(点击这里跳转),这一节我们继续分析v-model指令在组件上的原理. 组件上的v-model原理 v-model指令在组件上的编译过程的parse阶段与在表单元素上一样(可以参考),与普通表单元素不同之处在于genCode的阶段,在执行model函数生成代码的时候,会执行genComponentModel函数: v-model编译阶段 export defa

  • 在Vue组件上动态添加和删除属性方法

    如下所示: 在组件上添加属性 this.$set(this.data,"obj",value'); 删除属性this.$delete(this.data,"obj",value'); 以上这篇在Vue组件上动态添加和删除属性方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: Vue.js动态添加.删除选题的实例代码 详解Vue 动态添加模板的几种方法

  • vue组件实践之可搜索下拉框功能

    之前也写过这个小组件,最近遇到select下加搜索的功能,所以稍微完善一下. 效果图: 子组件 DROPDOWN.VUE <template> <div class="vue-dropdown default-theme"> <div class="cur-name" :class="isShow ? 'show':''" @click="isShow =! isShow">{{itemli

  • vue在自定义组件上使用v-model和.sync的方法实例

    目录 自定义事件 自定义组件的v-model .sync 修饰符 思考 总结 自定义事件 tips 推荐始终使用 kebab-case 的事件名.(v-on会将事件名自动转换为小写,避免匹配不到) changeData × change-data √ 自定义组件的v-model 用法: 父组件定义数据源(不需要定义修改数据的方法),在子组件标签上通过v-model="data"进行传递 默认传递的属性名是value,事件名为input.可以在子组件中配置model选项重命名属性名和事件

  • 封装一个Vue文件上传组件案例详情

    目录 前言 1. 子组件 2 父组件使用 3.效果 4.总结 前言 在面向特定用户的项目中,引 其他ui组件库导致打包体积过大,首屏加载缓慢,还需要根据UI设计师设计的样式,重写大量的样式覆盖引入的组件库的样式.因此尝试自己封装一个自己的组件,代码参考了好多前辈的文章 1. 子组件 <template> <div class="digital_upload"> <input style="display: none" @change=&

  • vue loadmore组件上拉加载更多功能示例代码

    最近在做移动端h5页面,所以分页什么的就不能按照传统pc端的分页器的思维去做了,这么小的屏幕去点击也不太方便一般来讲移动端都是上拉加载更多,符合正常使用习惯. 首先简单写一下模板部分的html代码,,很简单清晰的逻辑: <template> <div class="loadmore"> <div class="loadmore__body"> <slot></slot> </div> <d

  • 解决vue组件中使用v-for出现告警问题及v for指令介绍

    在项目中运行v-for代码段时, <flexbox v-if="roleShow" style="padding:15px; box-sizing: border-box;"> <flexbox-item v-for="role in roles " > <x-button mini :type="role.type" style="padding: 0 14px" @clic

  • vue iView 上传组件之手动上传功能

    基于 Vue 的 UI 组件库现在已经有很多了,尤其是移动端的.现在又多了一个 iView . iView 主要服务于 PC 界面的中后台业务,是一套高质量的开源 UI 组件库,先上地址: https://github.com/iview/iview 官网是: https://www.iviewui.com/ 特性 使用单文件的 Vue 组件化开发模式 基于 npm + webpack + babel 开发,支持 ES2015 高质量.功能丰富 友好的 API ,自由灵活地使用空间 详细.友好的

  • 从零开始在NPM上发布一个Vue组件的方法步骤

    TL;DR 本文细致讲解了在NPM上发布一个Vue组件的全过程,包括创建项目.编写组件.打包和发布四个环节. 创建项目 这里我们直接利用@vue/cli来生成项目.如果没有安装@vue/cli的话,可以使用以下方法进行安装: # 如果喜欢npm npm i -g @vue/cli # 如果喜欢yarn yarn global add @vue/cli 此外,如果安装了npx(高版本的nodejs发行版会自带这一工具)的话,还可以很方便地通过npx vue这一方式实现免安装使用. 接下来就可以创建

随机推荐