解决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 KeyDown、KeyPress和KeyUp事件的区别与联系
Dec 03 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
Nov 20 Javascript
js对象的比较
Feb 26 Javascript
jQuery使用技巧简单汇总
Apr 18 Javascript
javascript学习总结之js使用技巧
Sep 02 Javascript
javascript中的 object 和 function小结
Aug 14 Javascript
vue的props实现子组件随父组件一起变化
Oct 27 Javascript
jQuery Validate插件自定义验证规则的方法
Dec 27 Javascript
JavaScript cookie详解及简单实例应用
Dec 31 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
Mar 06 Javascript
ES5和ES6中类的区别总结
Dec 21 Javascript
vue如何清除浏览器历史栈
May 25 Vue.js
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 IF ELSE简化/三元一次式的使用
2011/08/22 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
python中反射用法实例
2015/03/27 Python
Python中datetime常用时间处理方法
2015/06/15 Python
Python下载网络小说实例代码
2018/02/03 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
python 决策树算法的实现
2020/10/09 Python
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
2014新年元旦活动策划方案
2014/02/18 职场文书
幼儿评语大全
2014/04/30 职场文书
城管大队整治方案
2014/05/06 职场文书
社区志愿者活动方案
2014/08/18 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
四查四看整改措施
2014/09/19 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
婚礼答谢词范文
2015/09/29 职场文书