解决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 相关文章推荐
javascript 导出数据到Excel(处理table中的元素)
Dec 18 Javascript
基于Jquery制作的幻灯片图集效果打包下载
Feb 12 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
Jan 29 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
Nov 26 Javascript
详解JavaScript基于面向对象之继承实例
Dec 16 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
Aug 05 Javascript
关于JSON与JSONP简单总结
Aug 16 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
Oct 05 Javascript
JavaScript中各数制转换全面总结
Aug 21 Javascript
react 国际化的实现代码示例
Sep 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
adodb与adodb_lite之比较
2006/12/31 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
css图片自适应大小
2007/11/28 Javascript
jquery select下拉框操作的一些说明
2010/04/02 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
Python动态生成多维数组的方法示例
2018/08/09 Python
使用Python在Windows下获取USB PID&amp;VID的方法
2019/07/02 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
美国鲜花递送:UrbanStems
2021/01/04 全球购物
数学专业毕业生自荐信
2013/11/10 职场文书
小学新学期寄语
2014/04/02 职场文书
公司承诺函范文
2015/01/21 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
四年级作文之植物
2019/09/20 职场文书
js判断两个数组相等的5种方法
2022/05/06 Javascript