jQuery MiniUI

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

请问tree的"nodecheck"和"nodeselect"事件 [复制链接]

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2016-12-12 18:14:49 |只看该作者 |倒序浏览
tree是懒加载的:(设置的属性有:showcheckbox="true"  checkrecursive="true"  allowSelect="true")
var url = "@Url.Action("AA")?id=0&aaId=" + aaId;
        tree.setUrl(url);  


绑定了"nodecheck"
    tree.on("nodecheck", function (e) {      
        mini.alert(e.node.Id);
    });
和"nodeselect"事件
    tree.on("nodeselect", function (e) {
        var node = e.node;
        var sender = e.sender;
        sender.checkNode(node);
    });

问题:
1.直接点击checkbox会触发"nodecheck"事件,但是checkbox不会选中?

2.选中节点会触发"nodeselect"事件,也会选中checkbox,但是不会触发"nodecheck"事件?
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 8Rank: 8

沙发
发表于 2016-12-12 22:09:52 |只看该作者
js选中都不会触发事件

Rank: 3Rank: 3

板凳
发表于 2016-12-13 08:52:35 |只看该作者
felt 发表于 2016-12-12 22:09
js选中都不会触发事件

那么第一个问题呢

Rank: 8Rank: 8

地板
发表于 2016-12-13 09:55:20 |只看该作者
zxloveapple 发表于 2016-12-13 08:52
那么第一个问题呢

点击 checkbox默认是可以选中节点的复选框的
不清楚你做了什么处理
http://www.miniui.com/demo/#src=tree/functiontree.html
随便看一下有checkbox的示例,点击就是勾选

Rank: 3Rank: 3

5#
发表于 2016-12-13 10:16:39 |只看该作者
felt 发表于 2016-12-13 09:55
点击 checkbox默认是可以选中节点的复选框的
不清楚你做了什么处理
http://www.miniui.com/demo/#src=tre ...

第一个问题,在你们示例上面试过了,唯一的区别是你们的树不是懒加载的。
第二个问题,js是可以触发选中事件的,这个在你们的示例上面试过了.怀疑是树的懒加载造成节点的某些数据并没有更新好,而且nodecheck和nodeselect事件也会相互影响

Rank: 8Rank: 8

6#
发表于 2016-12-13 11:40:37 |只看该作者
zxloveapple 发表于 2016-12-13 10:16
第一个问题,在你们示例上面试过了,唯一的区别是你们的树不是懒加载的。
第二个问题,js是可以触发选中 ...

1 懒加载的树也是可以的
2 select和check是两回事,check是复选框的选中,select是节点包裹的一层边框和背景色
这两个事件没关联
http://www.miniui.com/demo/#src=tree/lazytree.html
这是我们懒加载树的示例,你可以基于我们示例修改测试,如果有问题,请修改成能重现你这问题的场景,上传html

Rank: 3Rank: 3

7#
发表于 2016-12-13 12:52:43 |只看该作者
felt 发表于 2016-12-13 11:40
1 懒加载的树也是可以的
2 select和check是两回事,check是复选框的选中,select是节点包裹的一层边框和 ...


只有在第一次点击复选框的时候会出现,以后就可以选中了。

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

Rank: 8Rank: 8

8#
发表于 2016-12-13 13:12:18 |只看该作者
本帖最后由 felt 于 2016-12-13 13:35 编辑
zxloveapple 发表于 2016-12-13 12:52
只有在第一次点击复选框的时候会出现,以后就可以选中了。

请提供懒加载这个页面修改后的代码

Rank: 3Rank: 3

9#
发表于 2016-12-13 13:33:34 |只看该作者
felt 发表于 2016-12-13 13:12
请提供懒加载这个页面修复后的代码

<body>    <h1>LazyTree 懒加载树形</h1>              <input type="button" value="刷新节点" onclick="refreshNode()"/><ul id="tree1" class="mini-tree"  style="width:300px;height:200px;padding:5px;"     showTreeIcon="true" textField="name"     idField="id" parentField="pid" resultAsTree="false" showCheckBox="true" allowSelect="true" checkRecursive="true"        >        </ul>         <script type="text/javascript">    mini.parse();      var tree=mini.get("tree1");      var url="../data/TreeService.aspx?method=LoadNodes";      tree.setUrl(url);              tree.on("nodecheck",function(e){        var node=e.node;        mini.alert(node.id);      });             tree.on("nodeselect",function(e){        var node=e.node;         var sender=e.sender;         sender.checkNode(node);      });     function refreshNode() {        var tree = mini.get("tree1");        var node = tree.getSelectedNode();        if (node) {            tree.loadNode(node);        }    }     </script>

什么修复后的代码?我只是在你们的例子上改了下

Rank: 8Rank: 8

10#
发表于 2016-12-13 14:10:11 |只看该作者
zxloveapple 发表于 2016-12-13 13:33
LazyTree 懒加载树形                                   mini.parse();      var tree=mini.get("tr ...

你监听了2个事件nodecheck和nodeselect,第一次点击checkbox,先触发的是nodeselect事件,复选框选中了,然后执行了点击复选框的的默认行为,选中再点击,就是取消选中。

Archiver|普加软件

GMT+8, 2024-9-30 07:19 , Processed in 1.070082 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部