
這篇文章主要介紹了解決iview多表頭動態更改列元素發生的錯誤的方法,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
解決iview 'You may have an infinite update loop in watcher with expression "columns"'
解決方案
單表頭是可以動態變化不需要增添什么東西

多表頭目前iview尚不能動態變化,會報錯You may have an infinite update loop in watcher with expression "columns"解決方法是github大神提供的:需要修改iview.js源碼

將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>感謝你能夠認真閱讀完這篇文章,希望小編分享的“解決iview多表頭動態更改列元素發生的錯誤的方法”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!
本文標題:解決iview多表頭動態更改列元素發生的錯誤的方法-創新互聯
文章地址:http://www.yijiale78.com/article18/djgggp.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、自適應網站、品牌網站建設、網站改版、域名注冊、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯