解决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 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
Jquery操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
jQuery代码优化 选择符篇
Nov 01 Javascript
javascript中方便增删改cookie的一个类
Oct 11 Javascript
JavaScript中数组对象的那些自带方法介绍
Mar 12 Javascript
动态的绑定事件addEventListener方法的使用
Jan 24 Javascript
jQuery中element选择器用法实例
Dec 29 Javascript
jQuery使用hide方法隐藏元素自身用法实例
Mar 30 Javascript
AngularJS入门教程之AngularJS指令
Apr 18 Javascript
Webpack打包css后z-index被重新计算的解决方法
Jun 18 Javascript
vue-cli 3 全局过滤器的实例代码详解
Jun 03 Javascript
vue.js实现简单购物车功能
May 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
python超简单解决约瑟夫环问题
2015/05/12 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
缴纳养老保险的证明
2014/01/10 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
服务理念口号
2014/06/11 职场文书
消防演习通知
2015/04/25 职场文书
运动会广播稿20字
2015/08/19 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL