解决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 相关文章推荐
指定js可访问其它域名的cookie的方法
Sep 18 Javascript
javascript firefox兼容ie的dom方法脚本
May 18 Javascript
Javascript 调试利器 Firebug使用详解六
Jul 05 Javascript
javascript中callee与caller的用法和应用场景
Dec 08 Javascript
基于jquery的放大镜效果
May 30 Javascript
js判断样式className同时增加class或删除class
Jan 30 Javascript
js判断变量初始化的三种形式及推荐用的形式
Jul 22 Javascript
jquery+ajax实现跨域请求的方法
Jan 20 Javascript
JavaScript创建对象的方式小结(4种方式)
Dec 17 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
Oct 12 Javascript
js 函数式编程学习笔记
Mar 25 Javascript
Vue的Class与Style绑定的方法
Sep 01 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 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
js 深拷贝函数
2008/12/04 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
Django的session中对于用户验证的支持
2015/07/23 Python
简单实现python爬虫功能
2015/12/31 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
介绍一下gcc特性
2012/01/20 面试题
护理专业本科生自荐信
2013/10/01 职场文书
大专自我鉴定范文
2013/10/23 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
世界遗产的导游词
2015/02/13 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android