layui treeSelect checkNode无法选中节点

/**
   * 选中节点,因为tree是异步加载,所以必须在success回调中调用checkNode函数,否则无法获取生成的DOM元素
   * @param filter lay-filter属性
   * @param id 选中的id
   */
  TreeSelect.prototype.checkNode = function(filter, id){
    var o = obj.filter(filter),
        treeInput = o.find('.layui-select-title input'),
        treeObj = obj.treeObj(filter),
        node = treeObj.getNodeByParam("id", id, null),
        name = node.name;
    treeInput.val(name);
    o.find('a[treenode_a]').removeClass('curSelectedNode');
    treeObj.selectNode(node);
  };

 

问题出在treeObj = obj.treeObj(filter) 根本选不到该控件,这个地方treeObj无对象返回,不知道Layui是怎么回事,demo是没问题的,到我的项目中就出问题了。有可能版本不对吧

 

问题找到了,只能解决。下面贴出我解决的代码

<div class="layui-inline layui-col-md4">
 <label class="layui-form-label bg-blue">实施人员</label>
 <div class="layui-input-block"  >
  <input type="text" class="layui-input" lay-filter="tree" id="tree"/>
 </div>
</div>




layui.use(["treeSelect"], function () {
            var treeSelect = layui.treeSelect;
            treeSelect.render({
                // 选择器
                elem: '#tree',
                // 数据
                data: 'project/getMemberList.do',
                // 异步加载方式:get/post,默认get
                type: 'get',
                // 是否开启搜索功能:true/false,默认false
                search: true,
                // 一些可定制的样式
                style: {
                    folder: {
                        enable: true
                    },
                    line: {
                        enable: true
                    }
                },
                // 点击回调
                click: function(d){
                    console.log(d);
                },
                // 加载完成后的回调函数
                success: function (d) {
                    console.log(d);
//                选中节点,根据id筛选
                    treeSelect.checkNode('tree', ${data.id},d.treeId);
                }
            });

 

treeSelect.checkNode('tree', ${data.id},d.treeId);在这我加了个传参d.treeId

下面再看我treeSelect.js的修改部分

 /**
   * 选中节点,因为tree是异步加载,所以必须在success回调中调用checkNode函数,否则无法获取生成的DOM元素
   * @param filter lay-filter属性
   * @param id 选中的id
   */
  TreeSelect.prototype.checkNode = function(filter, id,treeId){
    var newTreeId = treeId.replace('layui-treeSelect','layui-treeSelect-body');
    var inputId = treeId.replace('layui-treeSelect','treeSelect-input');
    var treeObj = $.fn.zTree.getZTreeObj(newTreeId);
    var node = treeObj.getNodeByParam("id", id, null);
    var treeInput = $("#"+inputId);
    treeInput.val(node.name);
    treeObj.selectNode(node);
  };

这是我采用投机的办法,曲线救国。其他的方法我就没去改了,这样可以选中节点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值