Giter Site home page Giter Site logo

xuliangzhan / vue-element-extends Goto Github PK

View Code? Open in Web Editor NEW
493.0 22.0 166.0 34.49 MB

🌴 基于 ElementUI 2.x 的扩展组件(已废弃 Have been abandoned)

License: MIT License

JavaScript 82.88% HTML 0.12% Vue 15.93% CSS 1.08%
elx-table elx-editable

vue-element-extends's Introduction

vue-element-extends(已废弃,不再维护)

npm version npm downloads gzip size: JS gzip size: CSS npm license

基于 Vue 2.6.x 、ElementUI 2.x 的扩展组件


Attention! This component is no longer recommended!
非常抱歉!该组件不再继续维护了
有需要可以了解下这个表格:🐬vxe-table


  • elx-table 功能点:

    • 支持自定义显示、隐藏列
    • 支持滚动渲染、海量数据
    • 支持导出 .csv 文件
    • 支持原 ElTable 的所有功能、参数、方法、插槽
  • elx-editable 功能点:

    • 支持只读、单元格编辑、整行编辑
    • 支持手动、单击、双击编辑模式
    • 支持渲染简化的 ElementUI 组件
    • 支持自定义渲染任意 Vue 组件
    • 支持动态列渲染
    • 支持(同步、异步)校验
    • 支持显示单元格值的修改状态
    • 支持增/删/改/查/还原
    • 支持方向键和 Tab 键切换单元格
    • 支持表格右键菜单
    • 支持自定义显示、隐藏列
    • 支持滚动渲染、海量数据
    • 支持导出 .csv 文件
    • 支持原 ElTable 的所有功能、参数、方法、插槽

Docs

存在问题: 树表格只能支持小部分功能,编辑情况下会存在问题

😱注:正常渲染不适用于一页显示海量数据(建议使用分页);启用滚动渲染可以支撑海量数据(缺点是滚动效果略差)

https://xuliangzhan.github.io/vue-element-extends/

Virtual Scroll

存在问题:

  • 多选列无法全选
  • 不支持树形结构
  • 不支持排序
  • 不支持筛选

Installing

npm install xe-utils vue-element-extends

unpkgcdnjs 上获取

<!-- 引入样式 -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<link rel="stylesheet" href="https://unpkg.com/vue-element-extends/lib/index.css">
<!-- 引入脚本 -->
<script src="https://unpkg.com/xe-utils"></script>
<script src="https://unpkg.com/vue-element-extends"></script>
import Vue from 'vue'
import VueElementExtends from 'vue-element-extends'
import 'vue-element-extends/lib/index.css'

Vue.use(VueElementExtends)

API

Editable Attributes

<elx-editable
  ref="editable"
  :edit-config="{trigger: 'click', mode: 'cell'}"
  :edit-rules="{name: [{required: true, message: 'Please enter a name.', trigger: 'blur'}]}">
  <elx-editable-column
    prop="name"
    label="Name"
    :edit-render="{name: 'ElInput'}"></elx-editable-column>
  <elx-editable-column
    prop="age"
    label="Age"
    :edit-render="{name: 'ElInputNumber'}"></elx-editable-column>
</elx-editable>

edit-rules 校验规则配置:

属性 描述 类型 可选值 默认值
required 是否必填 Boolean
min 校验值最小长度(如果 type=number 则比较值大小) Number
max 校验值最大长度(如果 type=number 则比较值大小) Number
type 类型校验 String number / string string
pattern 正则校验 RegExp
validator 自定义校验方法 Function(rule, value, callback)
trigger 触发校验方式 String blur / change blur

edit-config 编辑参数配置:

属性 描述 类型 可选值 默认值
trigger 触发方式 String manual(手动触发方式,只能用于 mode=row) / click(点击触发编辑) / dblclick(双击触发编辑) click
mode 编辑模式 String cell(单元格编辑模式) / row(行编辑模式) cell
render 渲染方式,可以设置为 scroll 启用滚动渲染,支持海量数据 String default / scroll
renderSize 只对 render=scroll 有效,配置一次渲染的条数 Number
props 配置节点对应属性值 Object {children: 'children'}
showIcon 是否显示列头编辑图标 Boolean true
showStatus 是否显示单元格值的修改状态 Boolean true
activeMethod 只对 type=default 的列有效,该函数 Function({row, rowIndex, column?, columnIndex?}) 的返回值用来决定这一行或列是否允许编辑 Function
autoClearActive 当点击其它地方后,是否自动清除最后激活的行或单元格 Boolean true
clearActiveMethod 该函数 Function({type, row, rowIndex, column?, columnIndex?}, event) 的返回值用来决定是否允许清除当前激活的行或单元格 Function
useDefaultValidTip 如果同时使用了数据校验和 fixed 列,请设置为 true 使用默认提示 Boolean true
validTooltip 只对 useDefaultValidTip=false 有效,设置校验 tooltip 提示消息的参数 Object { offset: 10, placement: 'bottom-start' }
disabledValidTip 关闭校验提示 Boolean false
autoScrollIntoView 当单元格被激活时,自动将单元格滚动到可视区域内 Boolean false
isTabKey 只对 trigger!=manual 有效,是否启用 Tab 键切换到下一个单元格 Boolean false
tabToActive 只对 isTabKey=true 有效,是否在 Tab 键切换后直接激活为编辑状态 Boolean false
isArrowKey 只对 trigger!=manual 有效,是否启用箭头键切换行和单元格 Boolean false
isDelKey 只对 trigger!=manual 有效,是否启用删除键清空单元格内容 Boolean false
isCheckedEdit 只对 trigger!=manual 有效,是否启用选中状态允许值覆盖式编辑 Boolean false
checkedEditMethod 只对 isCheckedEdit=true 有效,可以通过重写该函数 Function({row, rowIndex, column, columnIndex, cell}, event) 返回 false 来阻止默认值的覆盖行为 Function
keydownMethod 键按下时调用该函数 Function({active, checked}, event) Function

context-menu-config 表格右键菜单配置(如果是自定义 code 可以配合 custom-menu-link 事件使用):

属性 描述 类型 参数
disabledHeader 是否禁用表格头部右键 Boolean
headerMenus 表格头部菜单配置 Array { code, name, prefixIcon, suffixIcon, visible, disabled }
disabledBody 是否禁用表格内容右键 Boolean
bodyMenus 表格内容菜单配置 Array { code, name, prefixIcon, suffixIcon, visible, disabled }
headerVisibleMethod 该函数 Function({row, rowIndex, column, columnIndex, cell}, event) 的返回值用来决定是否显示头部右键菜单 Function
bodyVisibleMethod 该函数 Function({row, rowIndex, column, columnIndex, cell}, event) 的返回值用来决定是否显示内容右键菜单 Function

内置的菜单 code 列表:

编码 描述
CELL_RESET 清除单元格数据的值
CELL_REVERT 还原单元格数据
SELECT_REMOVE 删除选中的行
SELECT_RESET 清除选中的数据的值
SELECT_REVERT 还原选中的数据
SELECT_EXPORT 导出选中的数据
ROW_INSERT 在当前位置插入新行
ROW_INSERT_ACTIVE 在当前位置插入新行并激活编辑状态
ROW_REMOVE 删除当前行
ROW_RESET 清除当前行数据的值
ROW_REVERT 还原当前行数据
ROW_EXPORT 导出当前行数据
ALL_REMOVE 删除表格所有行
ALL_RESET 清除表格所有数据的值
ALL_REVERT 还原表格所有数据
ALL_EXPORT 导出表格所有数据
ALL_COLUMN_VISIBLE 显示所有列
COLUMN_HIDDEN 隐藏列

custom-columns 自定义列的配置:

属性 描述 类型 可选值 默认值
prop 对应列内容的字段名 String
visible 默认是否显示 Boolean true

Editable Events

事件名 说明 参数
valid-error 校验不通过时会触发该事件 rule,row,column,cell
edit-disabled 当点击后行或单元格如果是禁用状态时会触发该事件 row[,column,cell]?,event
edit-active 当点击后改变为编辑状态之后会触发该事件 row[,column,cell]?,event
clear-active 只对 autoClearActive=true 有效,当点击其它地方后,自动清除最后活动行或列之后会触发该事件 row[,column,cell]?,event
blur-active 当行或者单元格失焦之后会触发该事件 row[,column,cell]?,event
custom-menu-link 自定义的菜单点击后触发该函数 code,row,column,cell,event

Editable Methods

方法名 描述 参数
refresh 手动刷新表格,对于非双向同步的树形结构可能会用到
reload 初始化完整表格数据,更新为初始状态 datas
reloadRow 初始化指定行数据,更新为初始状态 row, record?
revert 还原更改,还原指定行 row 或者整个表格的数据 row?rows?,prop?
insert 从第一行新增一行新数据 record
insertAt 第二个参数 record 从指定位置新增一条数据; null 从第一行新增一行新数据;-1 从最后新增一条数据 data,record
remove 数据删除,指定 row 或 [row, ...] 删除多条数据 row?rows?
(v1.2+废弃) removes 根据多条数据删除 rows
removeSelecteds 删除选中行数据
clear 清空表格,删除表格所有行
reset 重置数据,清除指定行 row 或者 [row, ...] 或者整个表格的值 row?rows?
clearActive 清除所有已激活的行或单元格为不可编辑状态
hasActiveRow 判断当前是否已激活为编辑状态的行 row
getActiveRow 获取当前已激活为编辑行或单元格的信息
setActiveRow 只对 mode=row 有效,激活指定行为可编辑状态 row
setActiveCell 激活指定某一行的某个单元格为可编辑状态 row,prop?
setChecked 只对 target!==manual 有效,指定单元格为选中状态 row,prop
hasRowInsert 检查是否为新增的行数据 row
hasRowChange 检查行或列数据是否发生改变 row, prop?
updateStatus 更新单元格编辑状态(只对 showStatus=true 并且使用自定义渲染时,当值发生改变时才需要调用) scope
getAllRecords 获取表格数据集合
getRecords 获取表格数据,也可以指定索引获取某条数据 index
getInsertRecords 获取新增数据
getRemoveRecords 获取已删除数据
getUpdateRecords 获取已修改数据
checkValid 检测是否有校验不通过的列信息
validateRow 对表格某一行进行校验的方法,参数为行数据和一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:(是否校验成功,最近一列未通过校验的字段)。若不传入回调函数,则会返回一个 promise row,callback
validate 对整个表格进行校验的方法,参数为一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:(是否校验成功,最近一列未通过校验的字段)。若不传入回调函数,则会返回一个 promise callback
exportCsv 将表格数据导出为 .csv 文件,说明:支持IE9+、Edge、Chrome、Firefox 等常用浏览器。IE11以下可能存在中文乱码问题,部分浏览器需要手动修改后缀名为 .csv options

exportCsv options 的配置:

属性 描述 类型 可选值 默认值
filename 文件名 String table.csv
original 是否导出源数据 Boolean false
isHeader 是否显示表头 Boolean false
download 是否马上下载,如果设置为 false 则通过返回结果为内容的 Promise Boolean true
data 自定义数据 Array
columns 自定义列 Array
columnFilterMethod 列过滤方法,该函数 Function(row,index,list) 的返回值用来决定该列是否导出 Function
dataFilterMethod 数据过滤方法,该函数 Function(row,index,list) 的返回值用来决定该数据是否导出 Function

Editable-Column Attributes

<elx-editable-column
  prop="name"
  label="Name"
  :edit-render="{name: 'ElInput'}"></elx-editable-column>

edit-render 渲染参数配置

属性 描述 类型 可选值 默认值
name 渲染内置的组件名称 String ElAutocomplete / ElInput / ElSelect / ElCascader / ElTimeSelect / ElTimePicker / ElDatePicker / ElInputNumber / ElSwitch / ElRate / ElColorPicker / ElSlider ElInput
type 渲染类型 String default(组件触发后可视) / visible(组件一直可视) default
autofocus 该单元格在激活后自动获取焦点(如果是渲染自定义组件,需要指定 class=elx-custom_input 才会自动获得焦点) Boolean
(v1.2.13+废弃,保留兼容)attrs 改为使用 props Object {}
props 渲染组件附加属性,参数请查看被渲染的 Component props Object {}
events 渲染组件附加事件,参数为 ( { rule, row, column, $index }, ...Component arguments ) Object {}
options 只对 name=ElSelect 有效,下拉组件选项列表 Array []
optionProps 只对 name=ElSelect 有效,下拉组件选项属性参数配置 Object { value: 'value', label: 'label' }
optionGroups 只对 name=ElSelect 有效,下拉组件分组选项列表 Array []
optionGroupProps 只对 name=ElSelect 有效,下拉组件分组选项属性参数配置 Object { options: 'options', label: 'label' }

Editable-Column Scoped Slot

name 说明
自定义渲染显示内容,参数为 { row, column, $index, $render }
edit 自定义渲染组件,参数为 { row, column, $index, $render }
header 自定义表头的内容,参数为 { column, $index, $render }
valid 自定义校验提示信息,参数为 { rule, row, column, $index, $render }

Example

Run demo on jsfiddle.net or runjs

<template>
  <div>
    <el-button @click="$refs.editable.insert()">新增</el-button>
    <el-button @click="$refs.editable.removeSelecteds()">删除选中</el-button>

    <elx-editable
      ref="editable"
      :data.sync="tableData">
      <elx-editable-column
        type="selection"
        width="55"></elx-editable-column>
      <elx-editable-column
        type="index"
        width="55"></elx-editable-column>
      <elx-editable-column
        prop="name"
        label="只读"></elx-editable-column>
      <elx-editable-column
        prop="sex"
        label="下拉"
        :edit-render="{name: 'ElSelect', options: sexList}"></elx-editable-column>
      <elx-editable-column
        prop="num"
        label="数值"
        :edit-render="{name: 'ElInputNumber'}"></elx-editable-column>
      <elx-editable-column
        prop="date"
        label="日期"
        :edit-render="{name: 'ElDatePicker', props: {type: 'date', format: 'yyyy-MM-dd'}}"></elx-editable-column>
      <elx-editable-column
        prop="flag"
        label="开关"
        :edit-render="{name: 'ElSwitch', type: 'visible'}"></elx-editable-column>
      <elx-editable-column
        prop="remark"
        label="文本"
        :edit-render="{name: 'ElInput'}"></elx-editable-column>
    </elx-editable>
  </div>
</template>

<script>
export default {
  data () {
    return {
      tableData: [{
        date: 1551322088449,
        name: '小徐',
        sex: '1',
        num: '26',
        flag: false,
        remark: '备注'
      }],
      sexList: [
        {
          'label': '男',
          'value': '1'
        },
        {
          'label': '女',
          'value': '0'
        }
      ]
    }
  }
}
</script>

License

MIT License, 2017-present, Xu Liangzhan

vue-element-extends's People

Contributors

xuliangzhan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vue-element-extends's Issues

请教,结构体数据不显示问题

您好,我做了几次尝试和对比,发现对于结构体内嵌套的结构,似乎不显示。
表格数据documentsdata如下:

[
  {
    "ID": 1,
    "DocType": {
      "ID": 4,
      "Name": "变更立项"
    }
 }
]

下拉选项数据accesscontextdata如下

[
  {
    "ID": 1,
    "Name": "Context",
    "Active": true
  }
]

代码如下:

<el-editable ref="editable" :data="documentsdata" border style="width: 100%" stripe>
      <el-editable-column label="ID" prop="ID" align="center"></el-editable-column>
      <el-editable-column label="DOCTYPE" prop="DocType.ID" align="center"></el-editable-column>
      <el-editable-column prop="attr1" label="文本输入" :editRender="{name: 'ElInput'}" align="center"></el-editable-column>
      <el-editable-column label="AC_CONTEXT1" prop="AccessContext.ID" align="center">
        <template slot-scope="scope">
          <el-select v-model="scope.row.AccessContext.ID" clearable>
            <el-option
              v-for="item in accesscontextdata"
              :key="item.ID"
              :label="item.Name"
              :value="item.ID">
            </el-option>
          </el-select>
        </template>
      </el-editable-column>
      <el-editable-column prop="ID" label="性别" width="100" :editRender="{name: 'ElSelect', options: sexList}" align="center"></el-editable-column>
      <el-editable-column label="AC_CONTEXT" prop="AccessContext.ID" :editRender="{type: 'default'}" align="center">
        <template slot="edit" slot-scope="scope">
          <el-select v-model="scope.row.AccessContext.ID" clearable>
            <el-option
              v-for="item in accesscontextdata"
              :key="item.ID"
              :label="item.Name"
              :value="item.ID">
            </el-option>
          </el-select>
        </template>
      </el-editable-column>
</el-editable>

效果图如图1:问题:DocType.ID这个字段没有显示,点击也不显示。
1
效果图2,作为select对比,AC_CONTEXT1显示为下拉状态,但是AC_CONTEXT不显示结果,点击AC_CONTEXT显示结果和下拉状态。
2
同样作为对比的sex那列也没问题。所以我感觉是嵌套结构体数据结构的问题么?
谢谢您。

单元格编辑类型可否加上transfer穿梭框?

希望能在编辑列中做 选择多个标签(标签列出来让用户选,每选一个添加到单元格中) 的功能,目前element ui组件中只有穿梭框符合要求,但发现本扩展并不支持穿梭框,请问能否把它加进来?或者有其他更好的方法去实现这个功能吗?

excell表格聚焦

就是我看网页案例的时候,excell选中当前单元格有边框,而且浏览器控制台审查元素当前行也是input,然后我使用代码的时候,就没有选中效果,而且也不是input,询问下怎么解决

请教一个ID属性错误

不好意思打搅您,这个应该不是您的扩展问题,提示ID错误,同样的代码 prop="DocType.ID",几乎同样的数据,在不同页面,一个提示错误,一个不提示,感觉很奇怪。
[Vue warn]: Error in render: "TypeError: Cannot read property 'ID' of undefined"
提示错误的数据结构如下:

0: {ID: 3, Name: "图纸设计流程", DocType: {ID: 3, Name: "图纸设计"}, BeginState: {ID: 7, Name: "设计中..."},…}
  Active: true
  BeginState: {ID: 7, Name: "设计中..."}
  DocType: {ID: 3, Name: "图纸设计"}
    ID: 3
    Name: "图纸设计"
  ID: 3
  Name: "图纸设计流程"

提示错误的代码。

      <el-editable-column prop="DocType.ID" label="DOCTYPE" :editRender="{type: 'default'}" align="center">
        <template slot="edit" slot-scope="scope">
          <el-select v-model="scope.row.DocType.ID" clearable>
            <el-option
              v-for="item in doctypedata.doctypes"
              :key="item.ID"
              :label="item.Name"
              :value="item.ID">
            </el-option>
          </el-select>
        </template>
        <template slot-scope="scope">{{ getColumnLabel(scope.row.DocType.ID) }}</template>
      </el-editable-column>

无错误的数据结构。

0: {ID: 5, DocType: {ID: 14, Name: "秘密"}, Path: "", AccessContext: {ID: 1},…}
  AccessContext: {ID: 1}
  Ctime: "2019-03-09T20:09:56Z"
  DocState: {ID: 10, Name: "核定中..."}
  DocType: {ID: 14, Name: "秘密"}
    ID: 14
    Name: "秘密"
  Group: {ID: 7, Name: "[email protected]", GroupType: ""}
  ID: 5
  Path: ""
  Title: "布置图啊1"

无错误的代码

      <el-editable-column label="DOCTYPE" prop="DocType.ID" :editRender="{type: 'default'}" 
        align="center">
        <template slot="edit" slot-scope="scope">
          <el-select v-model="scope.row.DocType.ID" clearable>
            <el-option
              v-for="item in doctypedata.doctypes"
              :key="item.ID"
              :label="item.Name"
              :value="item.ID">
            </el-option>
          </el-select>
        </template>
        <template slot-scope="scope">{{ getColumnLabel2(scope.row.DocType.ID) }}</template>
      </el-editable-column>

insert()行后马上setActiveRow失败

demo的新增数据操作是点击新增一行,然后需要手动点击新增行的编辑才能编辑该行数据,我为了提高用户体验,在点击新增按钮时,除了insert新行还将其设为当前编辑行,那么用户就可以直接编辑了。但是当列表数据为空时,setActiveRow方法会报列表的children不存在,但如果列表原本是有1条或以上数据的,这个逻辑是正常的,我的新增按钮点击的方法如下:

var new_row = this.$refs.editable.insert()
this.$refs.editable.setActiveRow(new_row)

请问应该在insert后如何操作才能正常使用setActiveRow?或者更好地优化这个新增行的体验?

自定义渲染多级属性,输入符合规则的值也会校验不通过

重现

当 prop 为多级时,可以正确提示验证消息,但是输入符合规则的值也会校验不通过

<el-editable-column prop="product.name" label="产品名字" min-width="160" show-overflow-tooltip :edit-render="{type: 'default'}">
  <template v-slot="{ row }">
    {{row.product.name}}
  </template>
  <template v-slot:edit="{ row }">
    <el-input v-model="row.product.name"></el-input>
  </template>
</el-editable-column>
validRules: {
  'product.name': [
    { required: true, message: '请输入名称', trigger: 'change' },
    { min: 3, max: 50, message: '名称长度 4-20 个字符', trigger: 'change' }
  ]
}

尝试定位问题

editable.vue, line: 885 method _validCellRules (type, row, column)

这个方法获取单元格 value 值的时候是采用方括号语法,导致取不到多级属性值

尝试解决

可以使用 eval(row.data.${property}) 方法动态获得多级属性值,可能会有安全风险。更好的作法是 '.' 劈开property,循环取得可能存在的多级属性值

不知这样解决会不会带来其他的问题?

编辑无法输入值

你好,我这边点击编辑,然后把当前数据传进去,然后excell表格渲染出来,但是只能改原有数据,就是我之前有3列,就只能改那三列,其他的列无法编辑
TIM截图20190404160616

ElSelect使用普通数组要怎样表示label和value

示例中为这种形式
configTypes:[
{label: '气象站', value: '1'},
{label: '墒情站', value: '2'}
]
现在这种形式只设置 options:deviceTypes ,选择器不显示内容,要怎样才能让这样的数组显示呢
deviceTypes: ['主机', '传感器', '配件', '其他'],

请完善使用说明,需要安装一些不常用的package

使用说明比较简单,只是说使用Editable.vue 和 EditableColumn.vue两个文件
经测试除了常用的elementUI、vuex之外,还需要安装其他package,具体如下:

npm install node-sass sass-loader -D
npm install xe-utils --S

另外,为了简化安装,EditableColumn.vue中可以考虑不用sass的语法,我看没用sass什么特别的功能,和直接写css差别不大。

fixed列不能编辑

比如第一列有fixed属性,在行编辑模式下,点击该单元格就会自动取消行编辑模式

EditableColumn使用:editRender后不显示原来的值

这样使用此列可以显示对应的角色名:

<el-editable-column prop="role" label="角色" ></el-editable-column>

这样使用以后,刷新后此列不显示角色名,每个cell里都是空白,但能编辑。

<el-editable-column prop="role" label="角色" :editRender="{name: 'ElSelect', options: roleList}" ></el-editable-column>

是我漏了哪个地方吗?感谢

页面循环出多个editable,如何正确地使用

正在开发一个日历页面,点击日历中的天数,会弹出当天的editable,并编辑。
但目前无法使用this.$refs.editable这种方法去使用相关方法,因为页面内有很多个这样的table,在这种情况下应该如何正确使用?

property 'label' of undefined",表头不显示

  • 控制台报错
    vue.js:597 [Vue warn]: Error in render: "TypeError: Cannot read property 'label' of undefined"
    found in

--->


at src\views\test\test2.vue
at src\layout\components\AppMain.vue
at src\layout\Layout.vue
at src\App.vue

warn @ vue.js:597
logError @ vue.js:1739
globalHandleError @ vue.js:1734
handleError @ vue.js:1723
Vue._render @ vue.js:4537
updateComponent @ vue.js:2788
get @ vue.js:3140
run @ vue.js:3217
flushSchedulerQueue @ vue.js:2981
(anonymous) @ vue.js:1839
flushCallbacks @ vue.js:1760
Promise.then (async)
microTimerFunc @ vue.js:1808
nextTick @ vue.js:1852
queueWatcher @ vue.js:3068
update @ vue.js:3207
notify @ vue.js:703
reactiveSetter @ vue.js:1020
(anonymous) @ vue-router.esm.js:2508
(anonymous) @ vue-router.esm.js:2507
updateRoute @ vue-router.esm.js:1997
(anonymous) @ vue-router.esm.js:1875
(anonymous) @ vue-router.esm.js:1984
step @ vue-router.esm.js:1714
step @ vue-router.esm.js:1721
step @ vue-router.esm.js:1721
runQueue @ vue-router.esm.js:1725
(anonymous) @ vue-router.esm.js:1979
step @ vue-router.esm.js:1714
(anonymous) @ vue-router.esm.js:1718
(anonymous) @ vue-router.esm.js:1964
(anonymous) @ vue-router.esm.js:1792
iterator @ vue-router.esm.js:1943
step @ vue-router.esm.js:1717
step @ vue-router.esm.js:1721
step @ vue-router.esm.js:1721
(anonymous) @ vue-router.esm.js:1718
(anonymous) @ vue-router.esm.js:1964
(anonymous) @ permission.js:46
iterator @ vue-router.esm.js:1943
step @ vue-router.esm.js:1717
step @ vue-router.esm.js:1721
runQueue @ vue-router.esm.js:1725
confirmTransition @ vue-router.esm.js:1972
transitionTo @ vue-router.esm.js:1874
replace @ vue-router.esm.js:2285
replace @ vue-router.esm.js:2538
(anonymous) @ index.js:56
poll @ vue-router.esm.js:2126
(anonymous) @ vue-router.esm.js:2112
(anonymous) @ vue-router.esm.js:1987
(anonymous) @ vue-router.esm.js:1987
(anonymous) @ vue.js:1839
flushCallbacks @ vue.js:1760
./node_modules/core-js/modules/_invoke.js.module.exports @ _invoke.js:5
queue.(anonymous function) @ _task.js:35
run @ _task.js:21
listener @ _task.js:25
vue.js:1743 TypeError: Cannot read property 'label' of undefined
at Proxy.fn (index.common.js:6263)
at element-ui.common.js:12254
at Proxy.renderList (vue.js:3699)
at element-ui.common.js:12224
at Proxy.renderList (vue.js:3699)
at Proxy.render (element-ui.common.js:12217)
at VueComponent.Vue._render (vue.js:4535)
at VueComponent.updateComponent (vue.js:2788)
at Watcher.get (vue.js:3140)
at Watcher.run (vue.js:3217)

  • 代码如下
New Delete selecteds
  <el-editable ref="editable" :data.sync="tableData">
    <el-editable-column type="selection" width="55"></el-editable-column>
    <el-editable-column prop="name" label="Readonly"></el-editable-column>
    <el-editable-column prop="select" label="Select" :edit-render="{name: 'ElSelect', options}"></el-editable-column>
    <el-editable-column prop="num" label="Number" :edit-render="{name: 'ElInputNumber'}"></el-editable-column>
    <el-editable-column prop="date" label="DatePicker" :edit-render="{name: 'ElDatePicker', attrs: {type: 'date', format: 'yyyy/MM/dd'}}"></el-editable-column>
    <el-editable-column prop="flag" label="Switch" :edit-render="{name: 'ElSwitch', type: 'visible'}"></el-editable-column>
    <el-editable-column prop="text" label="Input" :edit-render="{name: 'ElInput'}"></el-editable-column>
  </el-editable>
</div>
<script> export default { data() { return { tableData: [ { date: 1551322088449, name: 'Name1', select: '1', num: 26, flag: false, text: 'Content1' }, { date: 1552460833946, name: 'Name2', select: '0', num: 28, flag: true, text: 'Content2' }], options: [{ label: 'Label1', value: '1' }, { label: 'Label2', value: '0' }] } } } </script> <style scoped> </style>
  • 依赖

"vue": "^2.5.17",
"element-ui": "^2.4.8",
"vue-element-extends": "^1.0.9",
"xe-utils": "^1.8.12",

请问find不支持多级属性么?

代码如下:

        getColumnLabel (value) {
          let selectItem = this.doctypedata.doctypes.find(item => item.ID === value)
          return selectItem ? selectItem.Name : null
        },  

发生错误
TypeError: Cannot read property 'find' of undefined

ElSelect 禁止编辑

<elx-editable-column
    prop="sex"
    label="下拉"
    :edit-render="{name: 'ElSelect', options: sexList}"></elx-editable-column>

sexList:
[
{
"label": "男",
"spell": "nan",
"value": "1",
"val": "x"
},
{
"label": "女",
"spell": "nv",
"value": "0",
"val": "o"
}
]

如果我已经存储了sex值,然后再其他地方回显的时候,不想使用ElSelect下拉组件,只想展示sex值,应该怎么做?

时间

请问怎么让时间选择器选择好24小时制的时间后不要自动显示成12小时制

关于ElDatePicker的使用疑问

测试日期: 2019年1月9日

  1. el-date-picker 饿了么官方组件
    组件使用:
      <el-date-picker
              v-model="hetong.shanghuriqi"
              class="hetong-input"
              prefix-icon=""
              type="date"
              placeholder="选择日期"
              format="yyyy 年 MM 月 dd 日"/>

通过组件选择日期,存储到mongodb,数据如下:
ISODate("2019-01-08T16:00:00.000Z"),

回显到el-date-picker ,显示: 2019年1月9日

  1. ElDatePicker vue-element-extends组件
    组件使用:
      <el-editable-column
        :edit-render="{name: 'ElDatePicker', attrs: {type: 'date', format: 'yyyy年MM月dd日'}}"
        label="借款日期"
        prop="jiekuanriqi"
        align="center"
        width="150px"
      />

通过组件选择日期,存储到mongodb,数据如下:
ISODate("2019-01-08T16:00:00.000Z"),
回显到表格界面 ,显示: 2019年1月8日

求助,一直报这个错:Duplicate presence of slot "default" found in the same render tree - this will likely cause render errors.

我看了我每一个prop好几遍,都没有重复的

然后我将项目中的代码直接复制进我的vue文件,也是报这个错,实在找不到原因。。。跪求帮助

vue.runtime.esm.js:587 [Vue warn]: Duplicate presence of slot "default" found in the same render tree - this will likely cause render errors.

<el-editable ref="editable" border size="mini" :data.sync="visitorInfoList" :edit-rules="validRules" :edit-config="{trigger: 'click', mode: 'row'}" style="width: 100%">
<el-editable-column type="selection" width="55"></el-editable-column>
<el-editable-column prop="visitorName" label="姓名" :edit-render="{name: 'ElInput'}"></el-editable-column>
<el-editable-column prop="gender" label="性别" :edit-render="{name: 'ElSelect', options: sexList}"></el-editable-column>
<el-editable-column prop="phoneNo" label="手机号码" :edit-render="{name: 'ElInput'}"></el-editable-column>
<el-editable-column prop="plateNo" label="车牌号码" :edit-render="{name: 'ElInput'}"></el-editable-column>
<el-editable-column prop="certificateNo" label="身份证号" :edit-render="{name: 'ElInput'}"></el-editable-column>
<el-editable-column label="操作" width="100">
<template v-slot="scope">
<el-button size="mini" type="danger" @click="removeEvent(scope.row)">删除</el-button>
</template>
</el-editable-column>
</el-editable>

可拖动表格

用的是sorttable js, 视图是可以拖动,但是怎么保存数据

是否可禁用 “当点击其它地方后,自动清除最后活动列”

触发方式:manual 手动触发模式
编辑方式:row 行编辑模式

在开发时发现,编辑某行的某几列数据后,点击其他地方,这行数据会直接成为表格新的一行,貌似也没有根据文档中“当点击其它地方后,自动清除最后活动列”这样操作,也没有调用保存方法。
于是我去文档找到clear-active事件,使用后发现:这行数据直接成为表格新的一行后才调用这个事件绑定的方法,但希望能做到的是:
(1)在这行数据成为表格新的一行前,我可以截断它,这条数据仍保持在编辑状态:比如弹出一个confirm框,咨询用户接下来是想保存这行数据还是继续编辑还是放弃更改这行数据。
(2)或者直接禁用这个点击其他地方对正在编辑行的影响。

感谢解答Thanks♪(・ω・)ノ

关于及时修改,及时响应的问题。

getAllRecords 获取表格数据集合
getRecords 获取表格数据,也可以指定索引获取某条数据 index
getInsertRecords 获取新增数据
getRemoveRecords 获取已删除数据
getUpdateRecords 获取已修改数据

举个例子:
步骤一: 我添加,修改,删除了一些数据。
步骤二: 我在clear-active事件响应中,应用了这些修改。也就是将数据更改同步到服务器。
步骤三:我再次添加,修改,删除了一些数据。
步骤四:我在clear-active事件响应中,发现:
步骤一所做的添加,修改,删除的数据,仍然在里面。

我的预期:
步骤一修改后,我处理了,同步到服务器。
此时应该把修改后的数据作为原始数据。
步骤三中的修改,应该相当于在原始数据上修改。

不知道有没有表达清楚。

渲染已有数据

你好,我想问下,我现在已有一些数据,比如我从excell表格中得到数据,是数组嵌套对象的那种格式,我怎么渲染到表格里
TIM截图20190403120604

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.