zTree實(shí)現(xiàn)節(jié)點(diǎn)修改的實(shí)時(shí)刷新功能
一、應(yīng)用場(chǎng)景
在實(shí)際應(yīng)用中會(huì)遇到動(dòng)態(tài)操作樹各節(jié)點(diǎn)的需求,在增加樹節(jié)點(diǎn)后如何實(shí)時(shí)動(dòng)態(tài)刷新樹就十分有必要了。
二、項(xiàng)目實(shí)踐

比如要在test1234節(jié)點(diǎn)下新建子節(jié)點(diǎn),首先要選中test1234節(jié)點(diǎn),添加成功后,根據(jù)test1234結(jié)點(diǎn)的TID去后臺(tái)請(qǐng)求對(duì)應(yīng)子節(jié)點(diǎn)數(shù)據(jù),實(shí)現(xiàn)動(dòng)態(tài)刷新。刪除節(jié)點(diǎn)類似。
三、代碼實(shí)現(xiàn)
1、初始化時(shí)必須設(shè)置配置
<span style="font-size:14px;"> async:{
enable:true,
url:"../admin/scriptManager/loadNodeByID.htm",
autoParam:["id"],
dataType:"json",
},
view: {
selectedMulti: false
}
}</span>
2、刷新方法
/**
* 刷新當(dāng)前節(jié)點(diǎn)
*/
function refreshNode() {
/*根據(jù) treeId 獲取 zTree 對(duì)象*/
var zTree = $.fn.zTree.getZTreeObj("scriptTree"),
type = "refresh",
silent = false,
/*獲取 zTree 當(dāng)前被選中的節(jié)點(diǎn)數(shù)據(jù)集合*/
nodes = zTree.getSelectedNodes();
/*強(qiáng)行異步加載父節(jié)點(diǎn)的子節(jié)點(diǎn)。[setting.async.enable = true 時(shí)有效]*/
zTree.reAsyncChildNodes(nodes[0], type, silent);
}
/**
* 刷新當(dāng)前選擇節(jié)點(diǎn)的父節(jié)點(diǎn)
*/
function refreshParentNode() {
var zTree = $.fn.zTree.getZTreeObj("scriptTree"),
type = "refresh",
silent = false,
nodes = zTree.getSelectedNodes();
/*根據(jù) zTree 的唯一標(biāo)識(shí) tId 快速獲取節(jié)點(diǎn) JSON 數(shù)據(jù)對(duì)象*/
var parentNode = zTree.getNodeByTId(nodes[0].parentTId);
/*選中指定節(jié)點(diǎn)*/
zTree.selectNode(parentNode);
zTree.reAsyncChildNodes(parentNode, type, silent);
}
3、涉及的方法詳解
1、$.fn.zTree.init(obj,zSetting,zNodes)zTree的初始化方法,創(chuàng)建zTree必須使用此方法
參數(shù)說明
obj JQuery Object用于展現(xiàn)zTree的DOM容器
zSetting JSON zTree的配置數(shù)據(jù),具體請(qǐng)參考 “setting 配置詳解”中的各個(gè)屬性詳細(xì)說明
zNodes Array(JSON)/JSON zTree的節(jié)點(diǎn)數(shù)據(jù),具體請(qǐng)參考 “treeNode 節(jié)點(diǎn)數(shù)據(jù)詳解”中的各個(gè)屬性詳細(xì)說明
返回值
zTree對(duì)象,提供操作zTree的各種方法,對(duì)于通過js操作zTree來(lái)說必須通過此對(duì)象
如果不需要自行設(shè)定全局變量保存,可以利用
2、zTreeObj.getSelectedNodes獲取 zTree 當(dāng)前被選中的節(jié)點(diǎn)數(shù)據(jù)集合
返回值
返回值 Array(JSON)當(dāng)前被選中的節(jié)點(diǎn)數(shù)據(jù)集合
方法實(shí)例:
1. 獲取當(dāng)前被選中的節(jié)點(diǎn)數(shù)據(jù)集合
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
3、zTreeObj.getNodeByTId根據(jù) zTree 的唯一標(biāo)識(shí) tId 快速獲取節(jié)點(diǎn) JSON 數(shù)據(jù)對(duì)象
參數(shù):tId String 節(jié)點(diǎn)在 zTree 內(nèi)的唯一標(biāo)識(shí) tId
返回值:返回值 JSON tId 對(duì)應(yīng)的節(jié)點(diǎn) JSON 數(shù)據(jù)對(duì)象如無(wú)結(jié)果,返回 null
方法實(shí)例:
1. 獲取 tId = "tree_10" 的節(jié)點(diǎn)數(shù)據(jù)
var treeObj = $.fn.zTree.getZTreeObj("tree");
var node = treeObj.getNodeByTId("tree_10");
4、zTreeObj.selectNode選中指定節(jié)點(diǎn)
參數(shù):treeNode JSON 需要被選中的節(jié)點(diǎn)數(shù)據(jù)
addFlag Boolean
addFlag = true 表示追加選中,會(huì)出現(xiàn)多點(diǎn)同時(shí)被選中的情況
addFlag = false 表示單獨(dú)選中,原先被選中的節(jié)點(diǎn)會(huì)被取消選中狀態(tài)
setting.view.selectedMulti = false 時(shí),此參數(shù)無(wú)效,始終進(jìn)行單獨(dú)選中
5、zTreeObj.reAsyncChildNodes強(qiáng)行異步加載父節(jié)點(diǎn)的子節(jié)點(diǎn)。[setting.async.enable = true 時(shí)有效]
參數(shù):parentNode JSON 指定需要異步加載的父節(jié)點(diǎn) JSON 數(shù)據(jù),
reloadType String reloadType = "refresh" 表示清空后重新加載。reloadType != "refresh" 時(shí),表示追加子節(jié)點(diǎn)處理
isSilent Boolean 設(shè)定異步加載后是否自動(dòng)展開父節(jié)點(diǎn)。isSilent = true 時(shí),不展開父節(jié)點(diǎn),其他值或缺省狀態(tài)都自動(dòng)展開。
方法實(shí)例
1. 重新異步加載當(dāng)前選中的第一個(gè)節(jié)點(diǎn)
var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
if (nodes.length>0) {
treeObj.reAsyncChildNodes(nodes[0], "refresh");
}
4、部分后臺(tái)代碼
/**
* 查詢工程對(duì)象
*
* @return
*/
@ResponseBody
@RequestMapping("/loadNodeByID.htm")
public List<ZTreeNode> loadNodeByID(Integer id) {
List<ZTreeNode> nodes = cuScriptProjectService.loadNodesByID(id);
// ZTreeNode zTreeNode = cuScriptProjectService.loadNodeByID(id);
return nodes;
}
2、
/**
* 根據(jù)工程ID加載工程節(jié)點(diǎn)數(shù)據(jù)
*/
@Override
public List<ZTreeNode> loadNodesByID(Integer id) {
/* 查詢工程集合 */
List<CUProject> allProjects = this.cuProjectDAO.findAllProjects();
Map<Integer, List<CUProjectVO>> allPorjectList = this.buildProjectVOMap(allProjects);
/* 查詢腳本集合 */
List<CUScript> allScripts = this.cuScriptDAO.findAllScripts();
Map<Integer, List<CUScriptVO>> allScriptMap = this.buildScriptVOMap(allScripts);
/* 構(gòu)建ZTreeNode數(shù)據(jù)結(jié)構(gòu) */
List<ZTreeNode> treeNodeList = new ArrayList<ZTreeNode>();
loopBuildZTree(id, allPorjectList, allScriptMap, treeNodeList);
return treeNodeList;
}
以上所述是小編給大家介紹的zTree實(shí)現(xiàn)節(jié)點(diǎn)修改的實(shí)時(shí)刷新功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- ztree獲取當(dāng)前選中節(jié)點(diǎn)子節(jié)點(diǎn)id集合的方法
- js樹插件zTree獲取所有選中節(jié)點(diǎn)數(shù)據(jù)的方法
- 后臺(tái)獲取ZTREE選中節(jié)點(diǎn)的方法
- 在父頁(yè)面得到zTree已選中的節(jié)點(diǎn)的方法
- ztree獲取選中節(jié)點(diǎn)時(shí)不能進(jìn)入可視區(qū)域出現(xiàn)BUG如何解決
- jQuery插件zTree實(shí)現(xiàn)刪除樹節(jié)點(diǎn)的方法示例
- zTree異步加載展開第一級(jí)節(jié)點(diǎn)的實(shí)現(xiàn)方法
- jQuery插件zTree實(shí)現(xiàn)的基本樹與節(jié)點(diǎn)獲取操作示例
- jQuery插件zTree實(shí)現(xiàn)清空選中第一個(gè)節(jié)點(diǎn)所有子節(jié)點(diǎn)的方法
- zTree節(jié)點(diǎn)文字過多的處理方法
相關(guān)文章
簡(jiǎn)單對(duì)比分析JavaScript中的apply,call與this的使用
簡(jiǎn)單的說call,apply都屬于Function.prototype的一個(gè)方法,它是JavaScript引擎內(nèi)在實(shí)現(xiàn)的,因?yàn)閷儆贔unction.prototype,所以每個(gè)Function對(duì)象實(shí)例(就是每個(gè)方法)都有call,apply屬性。既然作為方法的屬性,那它們的使用就當(dāng)然是針對(duì)方法的了,這兩個(gè)方法是容易混淆的2015-12-12
javascript開發(fā)中因空格引發(fā)的錯(cuò)誤
最近寫一個(gè)關(guān)于用JavaScript做圖片自動(dòng)切換問題發(fā)現(xiàn)一個(gè)非常奇特的問題,除了空格和換行外完全相同的代碼,在Firefox下卻有截然不同的運(yùn)行結(jié)果,今天記錄以提供他人留意及自我備查。2010-11-11
使用ImageMagick進(jìn)行圖片縮放、合成與裁剪(js+python)
由于需要在服務(wù)器端處理,使用就研究使用imagemagick來(lái)進(jìn)行。同時(shí)準(zhǔn)備封裝了一個(gè)Node.js和Python的方法,主要還是講一下然后使用imagemagick來(lái)對(duì)圖片進(jìn)行縮放、合成后進(jìn)行裁剪吧2013-09-09
如何給ss bash 寫一個(gè) WEB 端查看流量的頁(yè)面
由于剛畢業(yè)的窮大學(xué)生,和朋友合租了一臺(tái)服務(wù)器開了多個(gè)端口提供 ss 服務(wù),懶得配置 ss-panel,就使用了 ss-bash 來(lái)監(jiān)控不同端口的流量,但每次都要等上服務(wù)器才能看到流量使用情況,很麻煩,于是就寫了個(gè)簡(jiǎn)單的頁(yè)面來(lái)提供 WEB 訪問,具體內(nèi)容一起通過本文學(xué)習(xí)吧2017-03-03
Javascript Event事件中IE與標(biāo)準(zhǔn)DOM的比較
說是IE與DOM的比較,其實(shí)還是瀏覽器之間的比較,眾多的瀏覽器中,IE獨(dú)樹一幟,并且占有大部分用戶市場(chǎng),后來(lái)的標(biāo)準(zhǔn)DOM雖然不少優(yōu)點(diǎn)之處,但畢竟一般用戶不關(guān)心也不知道這些,代碼編寫過程中,往往需要兼顧多個(gè)瀏覽器。2010-04-04
微信小程序多文件上傳 Tdesign及導(dǎo)入失敗問題
小程序文件上傳還是有點(diǎn)麻煩的,其實(shí)主要還是小程序?qū)Φ慕涌谟兄T多的不便,比如說,文件不能批量提交,只能一個(gè)個(gè)的提交,小程序的上傳需要專門的接口,這篇文章主要介紹了微信小程序多文件上傳 Tdesign及導(dǎo)入失敗問題,需要的朋友可以參考下2023-11-11
Bootstrap Table 在指定列中添加下拉框控件并獲取所選值
通過 bootstrap-table 的Column 配置項(xiàng)中的formatter,將獲取到的數(shù)據(jù)轉(zhuǎn)換為包含數(shù)據(jù)的 select 控件。然后根據(jù)用戶選擇項(xiàng)更新對(duì)應(yīng)單元格數(shù)據(jù),最后通過getallselection方法獲取所選行數(shù)據(jù)2017-07-07

