情不知所起,bug不知哪里来。
昨日依旧,今日阑珊。
xx:你的代码是不是有问题,咋又报错了?
xx:...。
别有幽愁暗恨生,此时无声胜有声。
Cannot read property 'getNodeByParam' of undefined
对于这个报错,思前想后,刚开始以为是加载顺序的问题,结果多次尝试发现没那么简单
*&*&&*¥%&

一阵捣鼓之后无效,我决定对源码动刀了==
看源码:
/** * 选中节点,因为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');
obj.get(filter).val(id).attr('value', id);
treeObj.selectNode(node);
};》》》
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);
};调用略作修改(注释的是原用法,下方是改后的)
success:function(data){
if (initData && initData.deptId) {
// treeSelect.checkNode('deptId', initData.deptId); 两个参数,分别为lay-filter的值、节点id(异步加载数据的id)
treeSelect.checkNode('deptId',initData.deptId,data.treeId); //加一个回调的treeId
}else {
// treeSelect.checkNode('deptId',"production");
treeSelect.checkNode('deptId',"production", data.treeId);
}
}山重水复疑无路,柳暗花明又一村。
其实这也是缓兵之计,曲线救国。