vue v-model 数组 checkbox

本文介绍如何使用Vue.js实现角色权限管理,通过前后端交互,动态加载角色和权限信息,并在前端实现根据角色选择相应权限的功能。具体实现包括初始化加载数据、更新角色权限等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


注:【网页版】右上方的悬浮框( 有目录索引 )


一、选中 数组中有其值的 checkbox

1-1】js 代码

var vue = new Vue({
	el:"#app",
	data:{
		roleqxs:[],
		qxs:[],
		updateQxInfo:[]
	},
	methods:{
		initLoadData(){
			// 后台查询出数据
			// 返回值中包括 1)角色及其权限信息 2)所有权限
			$.get("http://localhost:8080/getAllInfo",function(res){
				console.log(res);
				vue.qxs=res.data.QxInfo;  // 存储权限信息
				vue.roleqxs=res.data.RoleQxInfo;  // 存储角色及其权限信息
				
				// 循环遍历 角色及其权限 集合
				vue.roleqxs.forEach(function(obj){
					obj.qx.forEach(function(res){
						vue.updateQxInfo.push(obj.id+"-"+res.id)
					})
				})
				console.log(vue.updateQxInfo)
			})
		},
		toUpdate(){
			$.post("http://localhost:8080/updateRoleQx","list="+vue.updateQxInfo,function(res){
				alert(res);
			})
		}
	},
	mounted:function(){
		this.initLoadData()
	}
})

1-2】前端代码

<tbody>
	<tr v-for="item,index1 in roleqxs">
		<td>{{item.role}}</td>
		<td>
			<span v-for="ii in qxs" class="debj_span_fk">
				<input type="checkbox" v-model="updateQxInfo" :value="item.id+'-'+ii.id"/>
				{{ii.permission}}
			</span>
		</td>
	</tr>
</tbody>
### Vue.js 中 `v-model` 的用法与实例 `v-model` 是 Vue.js 提供的一个指令,用于在表单输入控件和应用状态之间创建双向数据绑定。它简化了开发者手动更新 DOM 和响应用户交互的过程。 #### 基本语法 对于大多数表单元素(如 `<input>`、`<textarea>` 和 `<select>`),可以直接通过 `v-model` 绑定到组件的数据属性上[^1]: ```html <input v-model="message" placeholder="edit me"> <p>Message is: {{ message }}</p> ``` 上述代码展示了如何将用户的输入实时同步到变量 `message` 上,将其显示出来。 #### 使用场景 ##### 文本框 适用于简单的字符串输入: ```html <textarea v-model="description"></textarea> ``` 这里 `description` 将会随着用户编辑而自动更新。 ##### 复选框 当处理布尔值或者数组形式的选择项时非常有用: ```html <!-- 单个 --> <input type="checkbox" id="toggle" v-model="isChecked"> <!-- 数组 --> <div id='example-3'> <input type="checkbox" id="jack" value="Jack" v-model="checkedNames"> <label for="jack">Jack</label> <input type="checkbox" id="john" value="John" v-model="checkedNames"> <label for="john">John</label> <br> <span>Checked names: {{ checkedNames }}</span> </div> ``` 此例子中,`checkedNames` 可以是一个数组来存储多个被勾选项的值。 ##### 下拉菜单 可以轻松实现动态列表选择功能: ```html <select v-model="selectedCountry"> <option disabled value="">请选择国家</option> <option v-for="country in countries" :key="country">{{ country }}</option> </select> ``` 这里的 `countries` 应该是从服务器获取或是定义好的静态列表。 #### 高级特性 如果需要自定义行为,则可以通过 `.lazy`, `.number`, 或者 `.trim` 修改器调整默认的行为模式[^2]: - **`.lazy`**: 默认情况下,`v-model` 在每次 input 事件触发后都会同步数据;但如果添加了 lazy 修饰符,则只会在 change 事件发生之后才进行同步。 - **`.number`**: 自动将文本类型的数值转换成 Number 类型。 - **`.trim`**: 自动生成去掉首尾空白字符后的结果。 例如,在日期时间选择插件 flatpickr 中集成 `v-model` 来管理复杂的状态变化也可以借助这些技巧: ```javascript import { Component } from 'vue'; export default { data() { return { selectedDate: null, }; }, }; ``` 配合 HTML 结构如下所示即可完成基本配置利用 `v-model` 实现双向绑定: ```html <flat-pickr v-model="selectedDate"></flat-pickr> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值