整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Vue3問題:如何實現el-tree樹的單選?

          端功能問題系列文章,點擊上方合集↑

          序言

          大家好,我是大澈!

          本文1400+,整篇閱讀大約需要3分鐘。

          本文主要內容分三部分,第一部分是需求分析,第二部分是實現步驟,第三部分是問題詳解。

          如果您只需要解決問題,請閱讀第一、二部分即可。

          如果您有更多時間,進一步學習問題相關知識點,請閱讀至第三部分。

          1. 需求分析

          使用el-tree組件,渲染樹狀數據。

          要求默認全部展開、不顯示復選框、支持單選、以及點擊父級節點時不折疊子節點。

          當然,還有個小細節就是,點擊當前節點要高亮顯示。

          用過el-tree組件的朋友,肯定清楚,el-tree默認只支持多選。而且,除了支持單選,其它需求都可以使用現成的配置屬性來實現。

          那么問題來了,如何實現單選呢?

          2. 實現步驟

          2.1 先把全部代碼先放上


          模版代碼:

          <template>
          <!-- 樹 -->
          <el-tree
          style="min-width: 230px"
          v-loading="treeDataListLoading"
          class="treeStyle"
          :check-on-click-node="true"
          :highlight-current="true"
          :default-expand-all="true"
          :data="treeData"
          :props="treeDefaultProps"
          node-key="id"
          :show-checkbox="false"
          :check-strictly="true"
          @check="handleTreeNodeClick"
          ref="selectTree"
          :expand-on-click-node="false"
          />
          </template>

          邏輯代碼:

          <script setup>
          // 樹數據
          const treeData = reactive([])
          // 樹配置項
          const treeDefaultProps = {
          children: "children",
          label: "permissionName"
          };
          
          // 樹ref
          const selectTree = ref();
          // 樹節點選中事件
          const handleTreeNodeClick = (data, checkObj) => {
          // 共兩個參數,依次為:傳遞給 data 屬性的數組中該節點所對應的對象、樹目前的選中狀態對象
          // 樹目前的選中狀態對象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四個屬性
          if (checkObj.checkedKeys.length != 0) {
          if (checkObj.checkedKeys.length == 2) {
          // 如果選擇超過一個節點,則只保留最后一個節點
          //單選實現
          selectTree.value.setCheckedKeys([data.id]);
          }
          }
          };
          </script>


          2.2 然后分析代碼

          對這些配置屬性特別了解的朋友,就當復習一遍了。

          • 先說單選的實現:

          先配置node-key屬性,每個樹節點的唯一標識,必須設置。

          然后設置check-strictly屬性,父子節點選中是否不關聯。默認是false,設置為true時為父子節點選中不關聯。

          再獲取一個el-tree樹的ref實例,用來對組件進行操作。

          再設置@check事件,在選中節點之后觸發的回調。此處注意區分使用@check-change事件,兩者的回調參數是不同的。@check事件共兩個參數,依次為:傳遞給 data 屬性的數組中該節點所對應的數據對象、樹目前的選中狀態對象。其中,樹目前的選中狀態對象,包含 checkedNodescheckedKeyshalfCheckedNodeshalfCheckedKeys 四個屬性。

          最后在@check事件回調中,判斷一下參數樹選中狀態對象checkObj的長度。如果選擇超過一個節點,則通過樹ref實例的setCheckedKeys方法,將參數樹選中數據對象dataid,每一次都覆蓋上一次選中的id,然后以數字形式傳到setCheckedKeys方法中,如此實現只保留最后一個節點。

          • 默認全部展開:

          使用了default-expand-all屬性。

          設置為true展開全部節點,設置為false不展開全部節點。默認是false不展開。

          • 不顯示復選框:

          使用了show-checkbox屬性 + check-on-click-node屬性。

          show-checkbox屬性,設置為true顯示復選框,設置為false不顯示復選框。默認是false不顯示。

          check-on-click-node屬性,是否在點擊節點的時候選中節點。默認值為 false,即只有在點擊復選框時才會選中節點。

          • 點擊父級節點時不折疊子節點:

          使用了expand-on-click-node屬性。

          是否在點擊節點的時候展開或者收縮節點。 默認值為 true,如果為 false,則只有點箭頭圖標的時候才會展開或者收縮節點。

          點擊當前節點要高亮顯示:

          • 使用了highlight-current屬性。

          是否高亮當前選中節點。默認值是 false,如果為true,則點擊當前節點時高亮顯示。

          3. 問題詳解

          3.1 官方文檔地址


          為了朋友們閱讀到此處時,方便查閱官方文檔學習。

          最后附上,el-tree組件Element官方文檔地址:https://element-plus.org/zh-CN/component/tree.html#%E5%B1%9E%E6%80%A7

          結語

          建立這個平臺的初衷:

          • 打造一個僅包含前端問題的問答平臺,讓大家高效搜索處理同樣問題。
          • 通過不斷積累問題,一起練習邏輯思維,并順便學習相關的知識點。
          • 遇到難題,遇到有共鳴的問題,一起討論,一起沉淀,一起成長。

          感謝關注微信公眾號:“程序員大澈”,然后加入問答群,讓我們一起解決實現所有BUG!

          TML

          本文,有很多很棘手的問題,例如使用sublime 編輯器可能安裝插件的時候會使用不了view in browser我公司的電腦可以安裝、結果家里的電腦就報編碼錯誤、需要改sublime插件源代碼解碼成utf8就可以了、還有一直連不上packagecontrol的網頁,可以群(526929231)使勁砸我得到解決~ sublime編輯器對于前端來說確實很好用!很好用!很好用! SublimeText、Webstorm推薦這兩個編輯器

          HTML起源

          剛開始設計HTML語言是為了將文字圖像關聯在一起,用另一臺發送或接收

          HTML(HyperTextMark-up Language)超文本標記語言

          HTML 不是一種編程語言,而是一中標記語言(mark-up language),標記語言是一套標記標簽(mark-up tag)

          HTML標簽

          標簽是由尖括號 < > 把關鍵詞括起來,標簽通常是成對出現的

          Web瀏覽器

          讀取 HTML 文檔,使用標簽來解析頁面的內容,以網頁的形式現實,瀏覽器不會現實HTML標簽

          現在市場上主流五大瀏覽器

          每種瀏覽器都有自己的內核(引擎)(解析網頁的一個程序,io以什么方式去渲染它都要通過引擎去執行)

          目前主流的瀏覽器分為五種

          • Chrome谷歌瀏覽器 (Webkit內核,V8 js引擎)

          • Firefox火狐瀏覽器 (Gecko內核)

          • Internet Explorer IE瀏覽器( Trident內核)

          • Opera 歐朋瀏覽器 (Presto內核) 主要市場:移動端

          • Safari 蘋果瀏覽器 (Webkit內核,但JS引擎為Nitro)

            不需要去記,簡單了解下

          標簽使用規范

          1. 標簽必須閉合

          2. 所有標簽名一律小寫

          3. 代碼縮進,使閱讀代碼更加易懂

          4. 特殊符號規范使用

          5. 命名規范,見名之意

          PS: 所有的標記符號都是半角英文

          編輯器

          眾說紛紜編輯器太多,最終只是一個工具,希望同學們能從萬千世界中找到適合自己的編輯器伙伴

          編輯器描述
          EditPlus手寫模式,適合初學手寫,無代碼提示(有IE調試視圖)
          Sublime 插件特別多,占用內存小,啟動速度快,打開大項目較慢,管理文件方式有些缺陷
          webstorm集成插件特別多,啟動較慢,占用內存大,開發和管理視圖都很方便
          Dreamweaver 適合初學,主要代碼提示和代碼插入功能強大,主要偏向于設計(有設計視圖)

          Sublime插件列表

          插件名描述詳情請戳
          emmet前端自動補全,提供快捷補全方式
          ColorPicker調色板,顏色選擇器
          SublimeTmplsublime模板,可以快速創建一個HTML模板
          view in browser用快捷方式打開瀏覽器進行調試HTML(需要配置參考后面網頁)
          LiveReload實時刷新HTML(編輯器里按下保存ctrl+s的時候,已經打開的HTMl會自動刷新)谷歌插件文件安裝方法需要配合谷歌LiveReload插件插件文件下載
          Color HighlighterCSS顏色代碼高亮及顏色預覽提示
          CSS3CSS3的代碼高亮提示還針對了CSS3的選擇器及錨類選擇器:hover :first-child :first-child ...的高亮
          JavaScript Completions原生js 代碼提示
          Sublime-Better-Completion可自選開啟代碼提示,支持jQ、js、bootstrap、php、sql ...倉庫地址此插件只能通過Github克隆下載安裝安裝方法

          注:Github 網頁中 下面是有詳細的使用方法 packagecontrol.io官網 里面search 可以進行搜索插件名字來找到具體使用方法,還有什么不懂或者安裝出現編碼錯誤以及安裝不上的可以拍打我~

          模板的配置

          配置描述
          !DOCTYPE html不是標簽,主要用于文檔類型的聲明
          charset="utf-8"聲明字符編碼集
          http-equiv="Content-Type"把Content屬性關聯到HTTP頭部(協議頭)

          HTML模板

          簡單了解,并不需要熟練掌握

          HTML樹狀結構

          Dom節點樹

          HTML網頁擴展名

          .html .htm這兩種是比較常見的

          在早期系統中文件名是有8+3組成 三個擴展名所以不支持四個字母的擴展采用.htm

          現在通常使用.html作為擴展名


          標簽的學習

          接下來所有的標簽元素學習都在body標簽里面去敲打實現、

          H標簽

          為了突出標題,字體大小和加粗發生相應的改變

          <h1>我是大主題</h1>
          <h2>我是大主題</h2>
          <h3>我是大主題</h3>
          <h4>我是大主題</h4>
          <h5>我是大主題</h5>
          <h6>我是大主題</h6>
          <!doctype html><!-- 讓瀏覽器使用html5的標準解析 -->
          <html>
           <head>
           <!-- 設置字符編碼集讓瀏覽器使用utf8解析當前網頁 -->
           <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
           <meta name="keywords" content="SEO搜索引擎,關鍵詞,多個請用逗號分開" />
           <meta name="description" content="網頁描述,八十字內" />
           <title>瀏覽器標簽頁上的網頁標題</title>
           </head>
           <body> <!-- 所有的標簽學習都在這body里面去敲,上面head元素里面的內容做個了解就可以了 -->
           
           <h1>我是大標題</h1>
           <h2>我是主題2</h2>
           <h3>我是主題3</h3>
           <h4>我是主題4</h4>
           <h5>我是主題5</h5>
           <h6>我是主題6</h6>
           
           </body>
          </html>

          可以發現h標簽從h1到h6會隨著數值越小字越小,并且都是會加粗和各占一行的狀態(前后的元素都會被換行)

          h1標簽一般一個頁面里面只會寫一次,為了讓搜索引擎爬取到 (寫一次利于SEO搜索引擎優化)

          p段落標簽

          <p>
           冬著一身素衣,緩緩而來,季節沒有了往日的姹紫嫣紅,卻用簡單的線條,勾勒出一幅潔白的畫,純潔通透,輕盈自然。
          </p>

          特殊符號

          剛我們了解到了瀏覽器是識別尖括號的,如果要在頁面中顯示html標記那要怎么做呢?這時候就需要特殊符號的表示來顯示

          符號描述
          空格&nbsp;
          小于&lt;
          大于&gt;
          引號&quot;
          版權&copy;
          ×叉&times;
          &&amp;

          加粗標簽

          符號描述
          B標簽物理加粗,頁面呈現加粗狀態.
          Strong標簽不僅能加粗,還利于搜索引擎優化
          <b>物理加粗,頁面呈現加粗狀態.</b>
          
          <strong>不僅能加粗,還利于搜索引擎優化,就是類似于百度、谷歌這種搜索引擎爬取你的網頁的時候會查找這個標簽里面的內容來優化顯示網頁的排名</strong>

          可以根據word文檔上面發現 b是加粗 u是下劃線 i是傾斜 同樣適用于標簽

          <i>我是傾斜</i> <u>我加了下劃線</u>

          A標簽

          • 鏈接一個頁面,點擊則會跳轉這個鏈接頁面

          • 使用錨點滾動到設定的位置

          <a href=""></a> a標簽中的href控制點擊的時候跳轉到哪里如果沒寫表示刷新當前頁面
          
          
          <a href="#"></a> 跳轉到當前頁面(回歸到頁面頂部)
          
          
          <a href="javascript: void(0);"></a> 死鏈接,不會跳轉,一般用于js特效
          
          
          <a href="#name">錨點到一個標簽上所對應的ID名字,點擊則跳到那個標簽位置</a>
          
          
          <a >跳轉到百度</a> 跳轉到百度 需要注意的是 http 協議不能少

          點擊#flag的a標簽的時候會跳到到上面h2標簽

          只有擁有name屬性的

          a標簽

          才能錨點,還有一種方式是通過ID標識唯一元素,也可以跳轉(不僅僅是a標簽)

          補充標簽

          描述標簽
          滾動標簽marquee
          字體標簽font
          定義水平線hr

          滾動標簽

          marquee

          屬性描述
          direction滾動方向
          behivior行為

          behivior

          描述
          alternate交替滾動
          scroll滾動
          slide滑落

          Font標簽

          屬性描述
          color顏色
          size0-7
          face字體

          hr水平線

          與font相似,擁有color和size屬性

          hr標簽沒有結束標簽 按照早期的習慣也H5也遵循XHTML的解析 所以統一會加一個反斜杠表示結束這個標簽,不加也能夠正確顯示,但是養成一個良好的習慣確實重要,比如微信小程序就是沒有結束標簽必須要使用一個反斜杠結尾否則直接報錯、


          練習一、

          結合今天所學,寫一個簡單的網頁

          內容如下:

          • 寫一篇收獲或感受 / 寫一篇文章 ————> 為什么要自己寫,網上一大把哈哈,可以自己寫下,鍛煉下思維

          • 需要包括h、p、a、加粗

          • 題材不限,至少200字

          練習二、

          在習題一的文章底部,使用滾動標簽進行滾動方向為45°

          可以在頭部找到我,如有勘誤、錯別字、盡情見諒很用心的檢查了 碼了這么久

          解析HTML文檔,可以使用一些編程語言中的HTML解析庫或工具。以下是一些常用的方法:

          1. 使用Python中的BeautifulSoup庫:BeautifulSoup是一個功能強大的HTML解析庫,可以幫助你從HTML文檔中提取數據。你可以使用pip安裝BeautifulSoup,然后使用它的解析器來解析HTML文檔。
          from bs4 import BeautifulSoup
          
          # 讀取HTML文檔
          with open('example.html', 'r') as file:
              html = file.read()
          
          # 創建BeautifulSoup對象
          soup = BeautifulSoup(html, 'html.parser')
          
          # 使用BeautifulSoup對象提取數據
          # 例如,提取所有的鏈接
          links = soup.find_all('a')
          for link in links:
              print(link.get('href'))
          
          1. 使用JavaScript中的DOM解析器:如果你在瀏覽器環境中,可以使用JavaScript的DOM解析器來解析HTML文檔。你可以使用document對象來訪問和操作HTML元素。
          // 讀取HTML文檔
          var html = document.documentElement.innerHTML;
          
          // 使用DOM解析器提取數據
          // 例如,提取所有的鏈接
          var links = document.getElementsByTagName('a');
          for (var i = 0; i < links.length; i++) {
              console.log(links[i].getAttribute('href'));
          }
          
          1. 使用其他編程語言的HTML解析庫:除了Python和JavaScript,還有許多其他編程語言也有自己的HTML解析庫,例如Java中的Jsoup、Ruby中的Nokogiri等。你可以根據自己的編程語言選擇適合的HTML解析庫來解析HTML文檔。

          無論你選擇哪種方法,解析HTML文檔的關鍵是了解HTML的結構和標簽,并使用相應的解析器或工具來提取所需的數據。

          當你解析HTML文檔時,你可能會遇到以下一些常見的任務和技術:

          1. 選擇器:使用選擇器可以方便地定位和提取HTML文檔中的特定元素。例如,你可以使用CSS選擇器來選擇具有特定類名或ID的元素,或者使用XPath來選擇具有特定屬性或層次結構的元素。
          2. 提取數據:一旦你定位到了要提取的元素,你可以使用相應的方法或屬性來獲取元素的文本內容、屬性值或其他相關信息。例如,你可以使用getText()方法來獲取元素的文本內容,使用getAttribute()方法來獲取元素的屬性值。
          3. 遍歷文檔:HTML文檔通常是一個樹狀結構,你可以使用遍歷方法來訪問和操作文檔中的不同元素。例如,你可以使用遞歸或循環來遍歷文檔的子元素、父元素或兄弟元素。
          4. 處理嵌套結構:HTML文檔中的元素可能會有嵌套的結構,你需要處理這些嵌套關系來正確地提取數據。例如,你可以使用遞歸方法來處理嵌套的列表、表格或嵌套的div元素。
          5. 處理特殊情況:在解析HTML文檔時,可能會遇到一些特殊情況,例如處理動態生成的內容、處理特殊字符或處理錯誤的HTML結構。你需要根據具體情況選擇合適的方法來處理這些特殊情況。

          總的來說,解析HTML文檔需要一定的HTML知識和編程技巧。你需要了解HTML的結構和標簽,選擇合適的解析器或工具,使用選擇器來定位元素,提取所需的數據,并處理特殊情況。通過不斷練習和實踐,你將能夠更熟練地解析HTML文檔并提取所需的數據。


          主站蜘蛛池模板: 国产人妖视频一区在线观看| 国产伦精品一区二区三区视频小说| 色狠狠色狠狠综合一区| 国产精品亚洲一区二区三区在线观看 | 爆乳无码AV一区二区三区| 性色A码一区二区三区天美传媒| 一区二区三区四区精品| 国产一区二区视频在线播放| 亚洲国产成人久久一区二区三区 | 国产一区二区在线观看| 国产亚洲欧洲Aⅴ综合一区| 蜜臀AV一区二区| jizz免费一区二区三区| 国产一区二区三区樱花动漫| 亚洲一区二区三区在线观看精品中文| 好吊妞视频一区二区| 综合久久一区二区三区 | 日韩电影一区二区| 国产精品一区电影| 久久精品一区二区三区中文字幕| 秋霞鲁丝片一区二区三区| 无码丰满熟妇一区二区| 久久久一区二区三区| 精品人妻无码一区二区色欲产成人| 亚洲一区中文字幕| 国产一区二区在线观看麻豆| 波多野结衣中文字幕一区二区三区| 日本一区免费电影| 精品无码国产一区二区三区AV| 中文字幕av一区| 人成精品视频三区二区一区| 精品国产日产一区二区三区| 色一情一乱一伦一区二区三区日本 | 国产午夜精品一区二区三区小说| 日韩精品无码Av一区二区| 国精品无码一区二区三区在线| 精品无码人妻一区二区三区18| 免费无码毛片一区二区APP| 无码喷水一区二区浪潮AV| 国产在线精品一区二区在线看| 国产乱码精品一区二区三区四川|