el-checkbox label绑定对象回显

本文介绍如何在Vue.js中使用v-for和v-model实现教师复选框的动态绑定,通过遍历teachers数组,为每个教师生成一个带有复选框的标签,展示其名称,并将选择状态绑定到ruleForm.checkboxGroup。

你可以用原生的写
自己处理一下样式吧!!

<span v-for="tag in item.teachers">
            <input type="checkbox" :id="tag.teacher_id" :value="tag" v-model="ruleForm.checkboxGroup" />
            <label :for="tag.teacher_id">{{tag.teacher_name}}</label>
          </span>
在 Vue 3 中,`defineModel` 不仅可以用于基本数据类型的双向绑定,也能用于对象的双向绑定。从 Vue 3.4 开始,官方更推荐使用 `defineModel()` 宏来实现双向数据绑定,它简化了双向绑定的代码,避免了手动管理 `props` 和 `emits` 的复杂性,尤其是在处理多个双向绑定时优势明显 [^1]。 ### 使用方法 #### 基础示例 在子组件中,使用 `defineModel` 绑定对象。例如,通过父组件绑定一个双向绑定对象 `user`: ```vue <template> <div> <input v-model="user.value.name" placeholder="Name"> <input v-model="user.value.age" placeholder="Age"> </div> </template> <script setup> const user = defineModel({ type: Object, default: () => ({ name: '', age: 0 }) }) </script> ``` 在这个例子中,`defineModel` 接收一个配置对象,指定了绑定对象的类型为 `Object`,并提供了默认值。子组件中的输入框通过 `v-model` 与 `user` 对象的属性进行绑定,当输入框的值发生变化时,父组件中的对象也会相应更新。 #### 绑定多个对象属性 可以同时绑定对象的多个属性,每个属性的变化都会同步到父组件。例如: ```vue <template> <div> <input v-model="person.value.name" placeholder="Name"> <input v-model="person.value.email" placeholder="Email"> </div> </template> <script setup> const person = defineModel({ type: Object, default: () => ({ name: '', email: '' }) }) </script> ``` ### 原理 `defineModel` 的源码中使用 `customRef` 和 `watchSyncEffect` 来实现。简单来说,`customRef` 允许创建自定义的响应式引用,而 `watchSyncEffect` 用于在响应式数据变化时同步更新。当子组件中绑定对象属性发生变化时,`watchSyncEffect` 会捕获到这些变化,并通过 `customRef` 触发相应的事件,将变化同步到父组件。这就实现了父子组件之间对象的双向数据绑定 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值