vue點擊頁面空白處實現(xiàn)保存功能
功能描述
雙擊表格一行實現(xiàn)表格編輯,點擊空白處實現(xiàn)保存。
表格可編輯相關(guān)文章在可編輯表格
實現(xiàn)思路
當表格在編輯狀態(tài)的時候在頁面進行click監(jiān)聽,判斷點擊區(qū)域是否為編輯區(qū)域,如果不是編輯區(qū)域?qū)崿F(xiàn)保存功能并取消click監(jiān)聽
功能點一:頁面監(jiān)聽與取消接聽
// 通過addEventListener與removeEventListener實現(xiàn) document.addEventListener("click", function, false); document.removeEventListener("click", function, false);
功能點二:判斷點擊區(qū)域是否為可編輯區(qū)域
該功能點有一定難度,首先你需要判斷點擊區(qū)域是否為表格區(qū)域,其次你要判斷點擊的區(qū)域是否為編輯狀態(tài)的呢一行。所以我分為兩步去實現(xiàn)
1、判斷點擊區(qū)域是否為表格區(qū)域
該功能點通過 contains 接口實現(xiàn)。判斷條件為 tableDom.contains(target) ;該接口可以判斷target是否為tableDom的子節(jié)點。
// 首先通過addEventListener 傳入點擊的dom區(qū)域 document.addEventListener( "click", e => { this.judgeClickDom(e); }, false ); // this.bindClick是為了取消監(jiān)聽,下文會進行描述 // 判斷點擊是否為table區(qū)域 judgeClickDom(e) { const { target } = e; let tableDom = document.getElementsByClassName("table"); // getElementsByClassName獲取到的是數(shù)組,一定要有下標不然會報錯 // 如果我們點擊的區(qū)域在表格外保存數(shù)據(jù) if (!tableDom[0].contains(target)) { this.saveTableData(); } },
2.判斷點擊區(qū)域是否為編輯狀態(tài)的那一行
該功能借助了element框架, 如何標記編輯狀態(tài)行,在可編輯表格中已有介紹
取消監(jiān)聽
由于我們監(jiān)聽click時使用的是箭頭函數(shù),沒有函數(shù)名或者函數(shù)表達式,所以在取消監(jiān)聽的時候會出現(xiàn)問題。 我的解決方案是給他綁定一個全局變量bindClick。 代碼如下
// 開始監(jiān)聽 document.addEventListener("click", (this.bindClick = e => { ... }) ); // 取消監(jiān)聽 document.removeEventListener("click", this.bindClick);
總結(jié)
以上所述是小編給大家介紹的vue點擊頁面空白處實現(xiàn)保存功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
vue報錯Cannot?read?properties?of?undefined?(...)類型的解決辦法
這篇文章主要給大家介紹了關(guān)于vue報錯Cannot?read?properties?of?undefined?(...)類型的解決辦法,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-04-04vue-seamless-scroll 實現(xiàn)簡單自動無縫滾動且添加對應點擊事件的簡單整理
vue-seamless-scroll是一個基于Vue.js的簡單無縫滾動組件, 基于requestAnimationFrame實現(xiàn),配置多滿足多樣需求,目前支持上下左右無縫滾動,單步滾動,及支持水平方向的手動切換功能,本節(jié)介紹,vue添加 vue-seamless-scroll實現(xiàn)自動無縫滾動的效果,并對應添加點擊事件2023-01-01