淺談vue 多個(gè)變量同時(shí)賦相同值互相影響
首先,該項(xiàng)目用到了element-ui中的Tabs 標(biāo)簽;然后來龍去脈是醬紫的:
一個(gè)項(xiàng)目中需動(dòng)態(tài)渲染一個(gè)列表billItemLIsts,列表中包含n組小列表,其中小列表的state_pj用于改變?cè)撔×斜碇械膔adio,于是:
<el-tabs tab-position='left' style='max-height:280px;'> <el-tab-pane v-for='(itema,index) in billItemLIsts' :key='itema.id' :label='itema.title' :value='itema.id'> <ul class='bill_set_ul'> <li v-for='(subitem,subindex) in itema.item' :key='subitem.id' :label='subitem.title' :value='subitem.id'> <div class='el-form-item__label'>{{subitem.title}}:</div> <div style='width:200px;margin-left: 100px;'> <el-radio-group v-model='subitem.state_pj' @change='changeSub(index,subindex)'> <el-radio :label='chargeIs'>計(jì)費(fèi)</el-radio> <el-radio :label='chargeNo'>不計(jì)費(fèi)</el-radio> </el-radio-group> </div> </li> </ul> </el-tab-pane> </el-tabs>
那么現(xiàn)在列表效果達(dá)到了,然鵝這個(gè)tab得放到dialog中,且存在取消與確定操作,確定時(shí)不用多說,取消時(shí)改變了的radio是不會(huì)自己變成我們想要的樣子,于是乎:
//最終的收費(fèi)設(shè)置數(shù)據(jù)billItemLIsts: [], //最終原始的收費(fèi)設(shè)置數(shù)據(jù)billItemLIstsOriginal: [],
沒錯(cuò)現(xiàn)在billItemLIsts就可以隨之怎么操作,因?yàn)槲覀冇衎illItemLIstsOriginal記住了他最初的樣子;
接下來就是付諸實(shí)際了:
// 取消修改收費(fèi)設(shè)置cancleChargeSet() { this.billItemLIsts = this.billItemLIstsOriginal; if(!this.chargeOpenIs){ this.chargingFunIs = 1; } },
然并卵…
百思不得其解,他并沒有發(fā)揮自己的作用
這是因?yàn)樵贠bject賦值的時(shí)候,傳遞的不是值,而是引用,他們指向了同一個(gè)空間!
搞清楚了原因就好下手啦
解決:
1.this.billItemLIsts = JSON.parse( JSON.stringify(this.billItemLIstsOriginal) );
2.或使用 ES6 的解析語法 this.billItemLIsts = { ...this.billItemLIstsOriginal }
補(bǔ)充知識(shí):VUE(ES6) 導(dǎo)出變量、常量,方法
在lib.js文件中, 使用 export{接口} 導(dǎo)出接口, 大括號(hào)中的接口名字為上面定義的變量, import和export是對(duì)應(yīng)的;
//lib.js 文件let bar = 'stringBar';let foo = 'stringFoo';let fn0 = function() { console.log('fn0');};let fn1 = function() { console.log('fn1');};export{ bar , foo, fn0, fn1}//main.js文件import {bar,foo, fn0, fn1} from './lib';console.log(bar+'_'+foo);fn0();fn1();
以上這篇淺談vue 多個(gè)變量同時(shí)賦相同值互相影響就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. IntelliJ IDEA安裝插件的方法步驟2. 通過Django Admin+HttpRunner1.5.6實(shí)現(xiàn)簡易接口測試平臺(tái)3. Docker 部署 Prometheus的安裝詳細(xì)教程4. IntelliJ IDEA設(shè)置自動(dòng)提示功能快捷鍵的方法5. idea重置默認(rèn)配置的方法步驟6. idea打開多個(gè)窗口的操作方法7. idea設(shè)置代碼格式化的方法步驟8. idea給項(xiàng)目打war包的方法步驟9. IntelliJ IDEA調(diào)整字體大小的方法10. IntelliJ IDEA刪除類的方法步驟

網(wǎng)公網(wǎng)安備