2020-11-05 关于前端‘古董‘dojo的树结构如何默认展开根节点

在工作中对公司的老平台进行维护中遇到了统一平台选择区域树样式统一的问题,自己在网上搜索了好多但也没有找到合适的方法,直到找公司前辈请教后解决了这个问题。这里就把这个比较久远的前端问题和大家分享一下:

原代码:

	model = new dijit.tree.ForestStoreModel({
			store: store, 
			deferItemLoadingUntilExpand: true,
			childrenAttrs: ["items"], 
			query: ""
		});	
		this.treeObjes = new dijit.Tree({
			model: model,
			persist: false,
			showRoot: false,
			getIconClass: basis.getIconClass_treeObjes, 
			style: "overflow-x:auto;overflow-y:auto;height:100%;"
		}, node);
		dojo.connect(this.treeObjes, "onDblClick", this, this.onDblClick_treeObjs_Asyn);

修改后的代码:

model = new dijit.tree.ForestStoreModel({
			store: store, 
			deferItemLoadingUntilExpand: true,
			childrenAttrs: ["items"], 
			query: ""
		});
		this.treeObjes = new dijit.Tree({
			model: model,
			persist: false,
			showRoot: false,
			getIconClass: basis.getIconClass_treeObjes, 
			style: "overflow-x:auto;overflow-y:auto;height:100%;"
		}, node);
		// 默认展开树结构第一层节点 
		this._timerRootFlag = setInterval(dojo.hitch(this,function(){// 自动展开第一层
			if(!this.treeObjes._getRootOrFirstNode()){
				return;
			}
			this.treeObjes._expandNode(this.treeObjes._getRootOrFirstNode());
			clearInterval(this._timerRootFlag);
			this._timerRootFlag = null;
		}), 500);
		dojo.connect(this.treeObjes, "onDblClick", this, this.onDblClick_treeObjs_Asyn);

这里的this._timerRootFlag使用了一个定时器(捡了个现成的定时器来用,所以代码量多出来了一行)来完成页面加载了树结构后,在触发器的时间走完之后进行这个根节点展开方法的执行,不过其中最主要的一段代码还是这个:

this.treeObjes._expandNode(this.treeObjes._getRootOrFirstNode());

对于树的根节点进行展开操作,不过这个问题自己没有解决的根本问题还是自己比较懒。想到去看dojo接口API文件中的详细方法属性,却只是粗略的看了一遍,没有看完,如果仔细的话,应该就没有这个问题了。所以下次再找不到解决方案的时候可以仔细去研读一下当前操作对象的详细文档,读一下后端会有更多的启发。

更多内容可以去看这位老哥写的dojo中tree的使用心得,链接:https://blog.csdn.net/huyanliang/article/details/46669943?biz_id=102&utm_term=dojo%E6%A0%91%E7%BB%93%E6%9E%84&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-46669943&spm=1018.2118.3001.4449

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值