ztree在onCheck()方法中防止因觸發聯動關係導致頁面多次渲染而卡死的問題

来源:https://www.cnblogs.com/xQlover/archive/2019/07/19/11215404.html
-Advertisement-
Play Games

這幾天在項目中遇到了要使用樹形選擇框, 而且要求比較複雜,具體敘述如下: 首先是有個選擇框,左邊選擇是適用的商品,右邊顯示已經選擇的商品.也就是說,左邊每次勾選操作,都要觸發一個事件去刷新右邊的頁面, 而且,左邊商品如果選擇大類,則右邊顯示大類,其下小類都不顯示 也就是說有父子聯動的關係. 剛開始的 ...


  這幾天在項目中遇到了要使用樹形選擇框, 而且要求比較複雜,具體敘述如下:

  首先是有個選擇框,左邊選擇是適用的商品,右邊顯示已經選擇的商品.也就是說,左邊每次勾選操作,都要觸發一個事件去刷新右邊的頁面, 而且,左邊商品如果選擇大類,則右邊顯示大類,其下小類都不顯示

也就是說有父子聯動的關係. 剛開始的時候, 選擇了使用bootStrap的tree_view這個插件,一開始還好,基本成型,後來測試時才發現問題,,當數據量很大的時候,,這個插件用起來很卡很卡,,而且又加了個帶搜索功能,這個插件就顯得有點雞肋,這時才發現了ztree.

  ztree雖然沒有tree_view界面好看,但是其擁有強大的api,和渲染速度,,比前者好用多了.後面在數據渲染的時候遇到了一個問題,當時設置了父子級關聯,然後再oncheck裡面刷新右側的顯示界面.剛開始沒啥問題,,後面當商品加到8000個的時候,,之前的問題又出現了,當我點擊父級的時候,頁面直接無響應.打上斷點跟著,才發現ztree內部會由於關聯關係,多次觸發onchek事件,導致頁面直接卡死.苦思良久都沒得辦法..直到無意中看到一個方法

                                                                  

beforeCheck,對就是這個方法,在oncheck觸發之前的回調,,於是我想到了辦法

 1 var temp="";
 2     var setting = {
 3         check: {
 4             enable: true,
 5             autoCheckTrigger: true
 6         },
 7         data: {
 8             simpleData: {
 9                 enable: true
10             }
11         },
12         callback: {
13             onCheck: zTreeOnCheck,
14             beforeCheck: zTreeBeforeCheck
15         }
16     };
17 
18     function zTreeBeforeCheck(treeId, treeNode){
19         temp=treeNode;
20     }
21     function zTreeOnCheck(event, treeId, treeNode) {
22     //debugger
23         if(treeNode.name!=temp.name){
24             return;
25         }
26         refresh(treeNode);      
27     }

用一個temp去存儲將要觸發oncheck()的節點對象, 然後再在oncheck()方法中判斷觸發這個方法的是不是你當前所勾選的節點,如果不是就直接pass,這樣一來,下麵的刷新頁面方法就不會因為父子聯動而多次觸發了,

頁面的響應速度也是杠杠的.現在真的發現,ztree真的是個強大的工具,速度快,功能全,有很多你想不到的方法.

最後附上ztree地址:http://www.treejs.cn/v3/api.php

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Hadoop 命令行最常用指令篇: 1.ls (list directory) Usage: hadoop fs -ls [R] Option: -R => 遞歸顯示 2.mkdir (make directory) Usage: hadoop fs -mkdir [-p] <paths> Take ...
  • SQL支持用NULL符號來表示缺少的值,它使用的是三值謂詞邏輯,計算結果可是以TURE、FALSE或UNKNOWN。 SQL中不同語言元素處理NULL和UNKNOWN的方式也有所不同,如果邏輯表達式只涉及已經存在的值,那麼最終的計算結果只有二種,要麼TRUE要麼FALSE。但是當邏輯表達式涉及缺少的 ...
  • 1.tar -jxvf geos-3.6.0.tar.bz2cd geos-3.6.0/./configure --prefix=/opt/geos360makemake install 2. tar -zxvf proj-4.9.3.tar.gzcd proj-4.9.3/./configure ...
  • ./orzdba -lazy -rt -S /u01/svr/working/my3306/run/mysql.sock mysql -s --skip-column-names -h127.0.0.1 -urep -P3306 -prep123 -Dmysql -S /u01/svr/workin ...
  • 今天做一個APP裡面設置頁面(個人中心) 就是一個列表菜單 頂部是一個頭像和賬戶標題, 底部為一個退出登錄按鈕 當然我第一時間就想到了UITableView, HeaderView, FooterView 期初我是這樣寫的, 但是運行就報錯了 我第一時間想到了, 是UITableView沒進行刷新布 ...
  • 微信小程式實現點擊拍照長按錄像功能 代碼裡面註釋寫的都很詳細,直接上代碼。官方的組件屬性中有觸摸開始和觸摸結束屬性。本功能依靠這些屬性實現。 .wxml代碼: .wxss代碼: .js代碼: // pages/camera/camera.js Page({ / 頁面的初始數據 / data: { c ...
  • 註:該思維學習自另一個博客:https://blog.csdn.net/software0017/article/details/80317348 以下為我自己總結的jQuery結構: ...
  • 利用dataTable展示數據列表時,當選擇每頁顯示數量時,滾動條還是按照頁面初始化時顯示的,導致無法滾動查看下麵的數據, 在stackoverflower 找到一個可用的方法,但不知道為什麼僅寫 $('#myDiv').getNiceScroll().resize()無效??? ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...