解决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 相关文章推荐
jquery tab标签页的制作
May 10 Javascript
详细分析JavaScript变量类型
Jul 08 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
Sep 11 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
May 12 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
Apr 26 Javascript
js封装成插件的步骤方法
Sep 11 Javascript
node结合swig渲染摸板的方法
Apr 11 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
Apr 18 Javascript
详解vuex commit保存数据技巧
Dec 25 Javascript
小程序自定义日历效果
Dec 29 Javascript
微信小程序用户授权最佳实践指南
May 08 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 编写的日历
2006/10/09 PHP
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
Python批量查询域名是否被注册过
2017/06/21 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
软件测试面试题
2015/10/21 面试题
数控技术应届生求职信
2013/11/13 职场文书
行政部总经理岗位职责
2014/01/04 职场文书
2014年财政工作总结
2014/12/10 职场文书
解约证明模板
2015/06/19 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
大学军训心得体会800字
2016/01/11 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python