解决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 相关文章推荐
让复选框只能选择一项的方法
Oct 08 Javascript
什么是Node.js?Node.js详细介绍
Jun 01 Javascript
angularJS中$apply()方法详解
Jan 07 Javascript
jquery中validate与form插件提交的方式小结
Mar 26 Javascript
vue2项目使用sass的示例代码
Jun 28 Javascript
JavaScript之json_动力节点Java学院整理
Jun 29 Javascript
Bootstrap4如何定制自己的颜色和风格
Feb 26 Javascript
浅析vue.js数组的变异方法
Jun 30 Javascript
js图片无缝滚动插件使用详解
May 26 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
Aug 12 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
vue项目中使用bpmn为节点添加颜色的方法
Apr 30 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
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
php面向对象的方法重载两种版本比较
2008/09/08 PHP
php实现的短网址算法分享
2014/06/20 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
js 调整select 位置的函数
2008/02/21 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
D3.js中data(), enter() 和 exit()的问题详解
2015/08/17 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
node.js的事件机制
2017/02/08 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
详解Python中for循环的使用
2015/04/14 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
python添加菜单图文讲解
2019/06/04 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
python中format函数如何使用
2020/06/22 Python
Pycharm Git 设置方法
2020/09/15 Python
南京软件公司的.net程序员笔试题
2014/08/31 面试题
史上最全面的Java面试题汇总!
2015/02/03 面试题
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
运动会闭幕式解说词
2014/02/21 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
惊涛骇浪观后感
2015/06/05 职场文书