解决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 相关文章推荐
基于JQuery实现的Select级联
Jan 27 Javascript
JavaScript两种跨域技术全面介绍
Apr 16 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
php常见的页面跳转方法汇总
Apr 15 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
Aug 20 Javascript
ionic实现带字的toggle滑动组件
Aug 27 Javascript
Angularjs 实现分页功能及示例代码
Sep 14 Javascript
Node.js中看JavaScript的引用
Apr 22 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
Jun 13 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
May 01 Javascript
解析vue、angular深度作用选择器
Sep 11 Javascript
ES6如何用一句代码实现函数的柯里化
Jan 18 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中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
学习php开源项目的源码指南
2014/12/21 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
Windows下为Python安装Matplotlib模块
2015/11/06 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
5款实用的python 工具推荐
2020/10/13 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
儿科主治医生个人求职信
2013/09/23 职场文书
校三好学生主要事迹
2014/01/11 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
成绩单公证书
2014/04/10 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
荒岛余生观后感
2015/06/09 职场文书
领导欢送会主持词
2015/07/06 职场文书
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android