jQuery MiniUI

 找回密码
 立即注册
查看: 2238|回复: 8
打印 上一主题 下一主题

tree自动加载数据如何设置空的文件夹? [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2017-3-16 20:03:44 |只看该作者 |倒序浏览
本帖最后由 userid 于 2017-3-16 20:39 编辑

tree自动加载数据生成目录树,点击空文件夹前"+",文件夹图标会变成文件图标。怎么保持其不变,并让'+'变成'-'?
点击前


点击后


希望的效果

问题补充:
或者说如何更合理的区分文件夹和文件?而不是通过子目录的数量来判断?

附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 2

沙发
发表于 2017-3-17 08:25:08 |只看该作者
我的做法是在onpreload里做个判断,如果data.length为0,就加一个空的数据。但这个方法个人觉的不好。有没有更好的方法?

Rank: 8Rank: 8

板凳
发表于 2017-3-17 09:46:55 |只看该作者
userid 发表于 2017-3-17 08:25
我的做法是在onpreload里做个判断,如果data.length为0,就加一个空的数据。但这个方法个人觉的不好。有没 ...

http://www.miniui.com/demo/#src=tree/list2tree.html
像other这个节点
需要这个节点有以下两个字段,isLeaf:false,asyncLoad:false

Rank: 2

地板
发表于 2017-3-17 10:53:37 |只看该作者
felt 发表于 2017-3-17 09:46
http://www.miniui.com/demo/#src=tree/list2tree.html
像other这个节点
需要这个节点有以下两个字段,is ...

有用,谢谢。

Rank: 2

5#
发表于 2017-3-21 14:16:01 |只看该作者
felt 发表于 2017-3-17 09:46
http://www.miniui.com/demo/#src=tree/list2tree.html
像other这个节点
需要这个节点有以下两个字段,is ...

这个方法有用,但是并不好。因为我每次需要查询两遍数据,一遍查父级数据,一遍查子级数据,然后才能确定
node是否要加asyncLoad:false属性。降低了效率。
我的想法是:既然我们在点+的时候仍然需要加载子级数据,是否可以在这个时候再决定是否要asyncLoad:false属性呢?
这个想法我试过了,我在onpreload里判断data的长度,如果为0,node加asyncLoad:false属性,结果不行。背后的运行机制我不清楚,是否有更好的方法?

Rank: 8Rank: 8

6#
发表于 2017-3-21 17:00:36 |只看该作者
userid 发表于 2017-3-21 14:16
这个方法有用,但是并不好。因为我每次需要查询两遍数据,一遍查父级数据,一遍查子级数据,然后才能确定 ...

按你的想法不还是2次加载来判断,效率更差的,还是先处理好再点击。

Rank: 2

7#
发表于 2017-3-22 09:19:53 |只看该作者
felt 发表于 2017-3-21 17:00
按你的想法不还是2次加载来判断,效率更差的,还是先处理好再点击。

我的方法:第一次只查询、加载父目录,设置isLeaf=true,出来效果就是图一;
第二次点击+号,只查询、加载子目录,如果为空,会改变父目录图标,如图二。
这种方法每次只需查询本级目录,无需判断是否有子目录。缺点是点+号时,空文件夹图标会变成图二。
你的方法:设置asyncLoad:false属性。这种方法,每次加载都需要查询本级目录、子级目录。解决了图标问题,但降低了效率。
现在的情况是,点击+号,加载子目录的时候,mini会根据子目录的数量来自动设置父目录图标的变化:有子目录,+变-,加载子目录;没有子目录,文件夹图标就变成文件图标了。我的想法是,能不能在这个时候:没有子目录的时候,让文件夹图标保持不变。

Rank: 8Rank: 8

8#
发表于 2017-3-22 15:15:02 |只看该作者
userid 发表于 2017-3-22 09:19
我的方法:第一次只查询、加载父目录,设置isLeaf=true,出来效果就是图一;
第二次点击+号,只查询、加载 ...

目前只能按第一种方式来做。

Rank: 2

9#
发表于 2017-3-23 14:36:21 |只看该作者
dforce 发表于 2017-3-22 15:15
目前只能按第一种方式来做。

问题解决了。

                /**
                 *加载树目录之前,判断当前目录是否有子目录,若没有,为其增加一个空文件夹
                 */
                function onpreloadTree(e) {
                        var node = e.node;
                        var trees = e.sender;
                        if (e.data.length == 0) {
                                e.data.push({
                                        text : "新建文件夹",
                                        id:"custom_flag_node",
                                       
                                });
                        }
                }
               /**
                 *绘制节点时,如果节点是自定义节点(node.id=="custom_flag_node"),
                 *改变其父节点asyncLoad为false,并删除此节点
                 */
                function ondrawnodetree1(e){
                        var tree1=e.sender;
                        var node=e.node;
                        if(node.id=="custom_flag_node"){
                                var parentNode=tree1.getParentNode(node);
                                tree1.updateNode(parentNode,{asyncLoad:false});
                                tree1.removeNode(node);
                                }       
                }

Archiver|普加软件

GMT+8, 2024-7-7 20:48 , Processed in 1.040088 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部