列表中的數(shù)據(jù),選中一條,點擊修改,彈窗顯示詳情,可以進行修改,點擊確定往后臺傳數(shù)據(jù),點擊取消關閉彈窗
有個特殊點就是 后臺傳過來的 date字段是 time類型,需要轉成date,el-date-picker才支持
效果圖:
我的思路就是
computed一個currentData return list[0],
然后將 currentData傳入彈窗組件,還傳入一個是否顯示彈窗變量visible,
彈窗組件內部
watch visible,如果visible是true就 深拷貝一個currentData,
這樣彈窗內部無論如何修改數(shù)據(jù)都不會影響 父組件的currentData,
然后已一個 時間字段的修改 來當例子 ,我覺得我的代碼寫的很丑 ,不夠優(yōu)雅 ,請各位指點一下 ,謝謝
父組件:
<modify-dialog v-if="checkedBettingObject" :betting-object="checkedBettingObject" :highlight-id.sync="highlightId"
:visible.sync="modifyDialogVisible"></modify-dialog>
子組件:
html:
最早時間:<el-date-picker v-model="dateProp" type="datetime"></el-date-picker>
js:
props: ['visible', 'bettingObject', 'highlightId'],
created() {
//創(chuàng)建時給子組件的currentData賦值
this.bettingObjectProp = Object.assign({}, this.bettingObject)
//給子組件綁定的currentData的時間字段賦值
this.dateProp = new Date(this.bettingObjectProp.earliestMatchTime)
},
data() {
return {
//子組件的currentData
bettingObjectProp: null,
//子組件的 時間選擇框綁定的值
dateProp: null
}
},
watch: {
//監(jiān)控,每次點擊按鈕visible都會為true,都將currentData深拷貝一次
visible() {
if (this.visible) {
this.bettingObjectProp = Object.assign({}, this.bettingObject)
this.dateProp = new Date(this.bettingObjectProp.earliestMatchTime)
}
},
//時間控件每次變化都改變 子組件currentData的值
dateProp() {
this.bettingObjectProp.earliestMatchTime = this.dateProp
}
},
我覺得我現(xiàn)在代碼寫的很麻煩,很啰嗦,不優(yōu)雅,但是又找不到好的解決辦法,請各位賜教,謝謝
總而言之,在點擊“修改”的時候準備數(shù)據(jù),并修改綁定到彈框的數(shù)據(jù)來顯示彈框,點擊保存的時候保存數(shù)據(jù)、隱藏彈框
至于保存數(shù)據(jù)后或取消修改時,準備的數(shù)據(jù)是否要銷毀,個人覺得可以不用銷毀
我現(xiàn)在做的是在選中一行準備編輯的時候變量傳遞給彈窗組件.
在彈窗組件中mounted的時候我使用的JSON.parse(JSON.stringify(xxx))來進行深拷貝,雖然這樣對于非通常對象,比如Date,File有問題,不過一般來說編輯的數(shù)據(jù)不會包含這樣類型.這樣比起Object.assign,如果數(shù)據(jù)包含數(shù)組或者嵌套對象,不會出現(xiàn)引用問題而誤修改原數(shù)據(jù).
彈窗組件只修改自己深拷貝過的值,提交和關閉都是傳遞給父級的事件,把之后的實際提交數(shù)據(jù)與實際關閉彈窗的動作都交由父級組件來完成.
這樣子組件的功能就比較單純,方便模塊化.
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯(lián)網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。