解决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 限制输入和粘贴(IE,firefox测试通过)
Nov 14 Javascript
JavaScript 注册事件代码
Jan 27 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
Dec 11 Javascript
js如何取消事件冒泡
Sep 23 Javascript
AngularJS中$watch和$timeout的使用示例
Sep 20 Javascript
js实现固定宽高滑动轮播图效果
Jan 13 Javascript
Canvas + JavaScript 制作图片粒子效果
Feb 08 Javascript
SpringMVC+bootstrap table实例详解
Jun 02 Javascript
自定义事件解决重复请求BUG的问题
Jul 11 Javascript
JS实现按钮颜色切换效果
Sep 05 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 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
php Try Catch异常测试
2009/03/01 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
prettify 代码高亮着色器google出品
2010/12/28 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
javascript实现很浪漫的气泡冒出特效
2020/09/05 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
python创建文件备份的脚本
2018/09/11 Python
Python当中的array数组对象实例详解
2019/06/12 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
简单介绍python封装的基本知识
2019/08/10 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
高性能装备提升营地:Kammok
2019/02/27 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
服务生自我鉴定
2014/01/22 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
承诺书样本
2014/08/30 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
销售口号霸气押韵
2015/12/24 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
Python 统计序列中元素的出现频度
2022/04/26 Python