解决iview多表头动态更改列元素发生的错误的方法


Posted in Javascript onNovember 02, 2018

解决iview 'You may have an infinite update loop in watcher with expression "columns"'

解决方案

单表头是可以动态变化不需要增添什么东西

解决iview多表头动态更改列元素发生的错误的方法

多表头目前iview尚不能动态变化,会报错You may have an infinite update loop in watcher with expression "columns"解决方法是github大神提供的:需要修改iview.js源码

解决iview多表头动态更改列元素发生的错误的方法

将iview.js中

columns: {
  handler: function handler() {
    var colsWithId = this.makeColumnsId(this.columns);
    his.allColumns = (0, _util.getAllColumns)(colsWithId);
    this.cloneColumns = this.makeColumns(colsWithId);

    this.columnRows = this.makeColumnRows(false, colsWithId);
    this.leftFixedColumnRows = this.makeColumnRows('left', colsWithId);
    this.rightFixedColumnRows = this.makeColumnRows('right', colsWithId);
    this.rebuildData = this.makeDataWithSortAndFilter();
    this.handleResize();
    },
   deep: true
  },

修改为

columns: {
   handler: function handler() {
     //[Fix Bug]You may have an infinite update loop in watcher with expression "columns"
     var tempClonedColumns = (0, _assist.deepCopy)(this.columns);
     var colsWithId = this.makeColumnsId(tempClonedColumns);
     //[Fix Bug End]
     this.allColumns = (0, _util.getAllColumns)(colsWithId);
     this.cloneColumns = this.makeColumns(colsWithId);

     this.columnRows = this.makeColumnRows(false, colsWithId);
     this.leftFixedColumnRows = this.makeColumnRows('left', colsWithId);
     this.rightFixedColumnRows = this.makeColumnRows('right', colsWithId);
     this.rebuildData = this.makeDataWithSortAndFilter();
     this.handleResize();
     },
   deep: true
   },

demo

<template>
 <div>
  单表头:
 <Table :columns="columns1" @on-row-click="onRowClick" :data="data1"></Table>
  多表头:
  <Table :columns="columns12" @on-row-click="onRowClick2" :data="data1" border height="500"></Table>
 </div>
</template>
<script>
 export default {
  data() {
   return {
    columns1: [
     {
      title: 'Name',
      key: 'name'
     },
     {
      title: 'Age',
      key: 'age'
     },
     {
      title: 'Address',
      key: 'address'
     }
    ],
    data1: [
     {
      name: 'John Brown',
      age: 18,
      address: 'New York No. 1 Lake Park',
      date: '2016-10-03'
     },
     {
      name: 'Jim Green',
      age: 24,
      address: 'London No. 1 Lake Park',
      date: '2016-10-01'
     },
     {
      name: 'Joe Black',
      age: 30,
      address: 'Sydney No. 1 Lake Park',
      date: '2016-10-02'
     },
     {
      name: 'Jon Snow',
      age: 26,
      address: 'Ottawa No. 2 Lake Park',
      date: '2016-10-04'
     }
    ],
    columns12: [{
     title: 'Name',
     align:'center',
     children: [{
      title: 'nickName',
      key: 'name',
     },
      {
       title: 'realName',
       key: 'name'
      }
     ]
    },
     {
      title: 'Age',
      key: 'age'
     },
     {
      title: 'Address',
      key: 'address'
     }
    ],
   }
  },
  methods: {
   onRowClick() {
    if('City'!==this.columns1[this.columns1.length-1].title) {
     this.columns1.splice(this.columns1.length, 0, {
      title: 'City',
      key: 'address'
     })
    }
   },
   onRowClick2() {
    if('City'!==this.columns12[this.columns12.length-1].title) {
     this.columns12.splice(this.columns12.length, 0, {
      title: 'City',
      key: 'address'
     })
    }
   }
  },
 }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
如何做到打开一个页面,过几分钟自动转到另一页面
Apr 20 Javascript
来自qq的javascript面试题
Jul 24 Javascript
jquery prop的使用介绍及与attr的区别
Dec 19 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
May 08 Javascript
AngularJS的一些基本样式初窥
Jul 27 Javascript
如何利用JSHint减少JavaScript的错误
Aug 23 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
微信小程序 密码输入(源码下载)
Jun 27 Javascript
React Native 图片查看组件的方法
Mar 01 Javascript
ES6学习笔记之let与const用法实例分析
Jan 22 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
浅谈JSON5解决了JSON的两大痛点
Dec 14 Javascript
JavaScript 点击触发复制功能实例详解
Nov 02 #Javascript
微信小程序实现留言板(Storage)
Nov 02 #Javascript
微信小程序实现留言板功能
Nov 02 #Javascript
小程序实现留言板
Nov 02 #Javascript
js中的闭包实例展示
Nov 01 #Javascript
微信小程序实现登录遮罩效果
Nov 01 #Javascript
在vue里使用codemirror遇到的问题
Nov 01 #Javascript
You might like
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
php头像上传预览实例代码
2017/05/02 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
php fread函数使用方法总结
2019/05/28 PHP
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
python 字符串常用函数详解
2019/09/11 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
如何清空python的变量
2020/07/05 Python
Python map及filter函数使用方法解析
2020/08/06 Python
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
Nip + Fab官网:英国美容品牌
2019/08/26 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
星级党支部申报材料
2014/05/31 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS