解决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 TextArea字符串长度限制代码集合
Oct 31 Javascript
seajs1.3.0源码解析之module依赖有序加载
Nov 07 Javascript
js判断undefined类型示例代码
Feb 10 Javascript
JavaScript动态修改网页元素内容的方法
Mar 21 Javascript
基于jQuery实现放大镜特效
Oct 19 Javascript
JavaScript必知必会(九)function 说起 闭包问题
Jun 08 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
Nov 09 Javascript
Angular 1.x个人使用的经验小结
Jul 19 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
Aug 20 Javascript
JS随机密码生成算法
Sep 23 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
Feb 11 Javascript
mpvue 项目初始化及实现授权登录的实现方法
Jul 20 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
对盗链说再见...
2006/10/09 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
composer.lock文件的作用
2016/02/03 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
深入理解js函数的作用域与this指向
2016/05/28 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
Python发送email的3种方法
2015/04/28 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
python如何提升爬虫效率
2020/09/27 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
马智宇结婚主持词
2014/04/01 职场文书
软件售后服务承诺书
2014/05/21 职场文书
初中思品教学反思
2016/02/20 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书