data() {
return {
loading: false,
info: {},
totalRoles: [],
readOnly: false,
placeHolder: '请输入内容',
chooseRoleNames: [] // 选中的数据 // 注意: el-checkbox取得的时label属性的值. 官方文档有说明不能为Object类型! 且label属性只能是String,Number,Boolean类型
el-checkbox-group
其中的chooseRoleNames是(发送axios请求后台api返回的)该用户对应的角色名的数组name[String](注意:必须为字符串,不支持Object)
el-checkbox(解决不回显的问题:重点在这,仔细看)
其中的totalRoles是(发送axios请求后台api返回的)所有角色(注意:勾选选中后,返回给el-checkbox-group的是对应的“:label”的值,而不是“:value”。必须为字符串String或Number或Boolean类型,不支持Object,如下图,参看官方文档:https://element.eleme.cn/#/zh-CN/component/checkbox#checkbox-attributes)
3. detail页面
<template>
<div class="inner-content">
<div class="oag-report">
<div class="align-right m-b-10 m-t-10">
<el-button v-show="showTentative" v-loading.fullscreen.lock="loading" type="danger" @click="save()">保存修改</el-button>
<info :id="id" :name="name" :status="status" @catchInfomation="catchInfomation" ref='infoData'/>
</template>
保存save方法放在在detail中:
<script>
import Info from './components/Info'
import { saveInfo } from '../../../api/system/user'
export default {
components: {
data() {
return {
id: +this.$route.query.id,
name: this.$route.query.name,
status: +this.$route.query.status,
infomation: {},
toTentative: 0,
showTentative: true,
showFinish: false,
showRevise: false,
loading: false,
exportExcelLoading: false,
exportPdfLoading: false
methods: {
catchInfomation(infomation) {
this.infomation = infomation
save() {
this.loading = true
// console.log(this.$refs.info.totalRoles)
let chooseRoles = []
this.$refs.infoData.totalRoles.forEach(val=>{
let t = this.$refs.infoData.chooseRoleNames.findIndex(find=>{
return find == val.name
if(t>-1){
chooseRoles.push(val)
this.infomation.roles = chooseRoles;
saveInfo(this.infomation).then(response => {
if (!response) {
alert('保存失败!')
} else {
alert('保存成功!')
this.goback()
this.loading = false
goback() {
this.$router.go(-1)
</script>
VUE也是正在学习,所以踩这个坑浪费了我一整天时间,网上关于checkbox回显失效的问题,说的都不是我想要的,还有的使用tree方式绕过去了,不好过还好找了以前的同事,分分钟解决了。
所以基础很重要,而且还要会看官方文档!!
希望对大家有所帮助!
一、场景:用户表——角色表,用户管理界面可以选择角色,并且每次初始化时候支持“回显”,如图:使用elementUI的复选框组合:el-checkbox-groupel-checkbox二、上代码:1. 整体结构(列表页和详情页):2. detail页面的组件Info:<el-checkbox-group v-model="chooseRoleNames"> <el-checkbox v-for="(item,index) in totalR
在写项目时,获取了数据后想要代码比较简洁,但在各种循环时出现了很多
问题。
由于获取的数据格式,跟最后需要提交的数据格式不一致,所以一开始打算分为两个数据,一个是负责显示的数据A,另一个是负责绑定的数据B。A负责页面的渲染,B负责最终的提交。
这个过程里面,常出现的两个
问题,一个是length undefined如下图
这个提示的原因一般是数据格式不是数组,所以获取不到length属性
另一个是跟上面长得很像 property 'xxx' of undefined,这个是因为对象里没有'xxx'这个属性
el-
checkbox的lable的用法很关键。
lable对应的是v-mod
el绑定的数组里的对象。
例如:如果lable直接设置为整个item,则v-mode绑定的数组里的对象是整个item。如果lable设置为item的某个值,则v-mod
el绑定的数组里的对象是被绑定的item的某个值。
data定义:
sendTyp
eList: [{
value: 1,
lab
el: "手机短信"
value: 2,
lab
el: "邮箱"
目录vue之ele中el-checkbox-group复选框组件的使用Home.vueSetTeam.vue
vue之ele中el-checkbox-group复选框组件的使用
Home.vue
作者:xzl
时间:05月05日160944
<template>
<div>checkedId - {{ checkedId }}</div>
<el-checkbox-group
:min="1"
:max="2">
<
el-
checkbox v-for="city in cities" :lab
el="city" :key="city">{{city}}</
el-
checkbox>
</
el-
checkbox-
group>
</template>
最近vue项目需要用到三级CheckBox复选框,需要实现全选反选不确定三种状态。但是element-ui table只支持多选行,并不能支持三级及以上的多选,下面通过本文给大家讲解实现方法。
效果图预览:
首先是页面布局,当然也可已使用table,但是自己用flex布局后面更容易增删改查其他功能
<div class=deliverySetting-table>
<div class=table-head>
<div class=selection>
<el-checkbox :indeterminate=indetermi
npm install --save
el-s
elect-tree
需要
element-ui
如果您的项目不
使用element-ui,则需要引入一个单独的
element-ui包,如下所示:
import '
el-s
elect-tree/lib/
element-ui' ;
import
Vue from '
vue' ;
import
ElS
electTree from '
el-s
elect-tree' ;
Vue . use (
ElS
electTree ) ;
组件内注册
import
ElS
electTree from '
el-s
elect-tree' ;
export default {
components : {
ElS
electTree
trigger: 'item',
// formatter: '{a} <br/>{b} : {c} ({d}%)'
formatter: function(params) { // 在此处直接用 formatter 属性
// console.log(params) // 打印数据
debugger
return `
<div>KB编号:${params['data'].kb}</div>.
在 Element UI 的表格中,要实现勾选框的反选功能,你可以使用以下步骤:
1. 首先,确保你的表格列定义了一个名为 `selection` 的类型,这样会在每一行添加一个勾选框列。例如:
```html
<el-table-column type="selection"></el-table-column>
2. 在你的 Vue 组件中,定义一个变量来存储选中的行数据。例如:
```javascript
data() {
return {
selectedRows: []
3. 在表格组件中,在 `el-table` 标签上添加 `@selection-change` 事件监听器,并将选中的行数据存储到 `selectedRows` 变量中。例如:
```html
<el-table
:data="tableData"
@selection-change="handleSelectionChange"
</el-table>
4. 在 Vue 组件的方法中,实现 `handleSelectionChange` 方法来更新 `selectedRows` 变量的值。例如:
```javascript
methods: {
handleSelectionChange(selection) {
this.selectedRows = selection
5. 最后,在 Vue 组件中,定义一个反选的方法来实现勾选框的反选功能。例如:
```javascript
methods: {
inverseSelection() {
const allRows = this.$refs.table.selectAll()
const selectedRows = this.selectedRows
const inverseRows = allRows.filter(row => !selectedRows.includes(row))
this.$refs.table.clearSelection()
inverseRows.forEach(row => this.$refs.table.toggleRowSelection(row))
现在,当你调用 `inverseSelection` 方法时,勾选框将会反选当前表格中的行数据。你可以根据自己的需求修改方法的实现,以适应你的业务逻辑。