解决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 web对话框与弹出窗口
Feb 22 Javascript
11款基于Javascript的文件管理器
Oct 25 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
Feb 06 Javascript
js写的评论分页(还不错)
Dec 23 Javascript
一个字符串反转函数可实现字符串倒序
Sep 15 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
Apr 16 Javascript
微信小程序实现验证码获取倒计时效果
Feb 08 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
Sep 14 Javascript
node.js使用express框架进行文件上传详解
Mar 03 Javascript
使用React手写一个对话框或模态框的方法示例
Apr 25 Javascript
layer设置maxWidth及maxHeight解决方案
Jul 26 Javascript
js实现3D旋转相册
Aug 02 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 URL参数获取方式的四种例子
2014/02/28 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
[原创]图片分页查看
2006/08/28 Javascript
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
python检索特定内容的文本文件实例
2018/06/05 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
个人求职信范文分享
2013/12/13 职场文书
公司财务总监岗位职责
2013/12/14 职场文书
上班离岗检讨书
2014/01/27 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
自强之星事迹材料
2014/05/12 职场文书
邀请书格式范文
2015/02/02 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
php去除数组中为0的元素的实例分析
2021/11/17 PHP