小白求教几个异步加载数据发送和返回值问题
ztree吧
全部回复
仅看楼主
level 1
双鱼XN 楼主
先说最终想要的东西:如何自定义treenode属性,并且给自定义和非自定义属性赋值;能够通过某些方法获得自定义属性值。同时需要异步请求中发送这些自定义属性。
具体问题如下
首先是异步数据发送问题:
var setting = {
async: {
enable: true,
url:"..",
dataType:'JSON',
autoParam:["id=parentId"],
otherParam:{"userLogicId":userLogicId},
dataFilter: filter
},
data :{
simpleData:{
enable: true,
idKey: "logicId",
pIdKey: "parentId",
rootPId: 0
}
}
};
function filter(treeId, parentNode, responseData) {
if (!responseData) return null;
for (var i=0, len=responseData.length; i < len; i++) {
responseData[i].parentId = responseData[i].parentId;
responseData[i].logicId = responseData[i].logicId;
}
return responseData;
}
由于后台接口已经写好,所以在发送数据的时候需要接受事先定义好的字段。在加载节点时需要发送自定义的parentId数据和一个固定的静态数据userLogicId。现在遇到的问题是在异步请求中,谷歌NetWork中并没有发现这个parentId。而在otherParam这个属性中的值倒是出现了。同时我并不清楚这里的异步请求是如何得到parentId的属性值的。
正常情况下,根节点的parentId为0,其余情况parentId和logicId都是异步请求返回值中的数据。同时返回值中还有其他数据,我该如何把这些数据存储起来放到treeNode中?
2016年04月07日 02点04分 1
level 1
双鱼XN 楼主
自定义的问题我已经解决了,在filter中设置一个新的变量,把异步请求的返回值中需要的部分存起来就行了。
function filter(treeId, parentNode, responseData) {
var childNode = [];
if (!responseData) return null;
for (var i=0, len=responseData.length; i < len; i++) {
childNode.push({
name: responseData[i].name,
logicId: responseData[i].logicId,
parentId: responseData[i].parentId,
isParent: true,
fullpath: responseData[i].fullpath
})
}
return childNode;
}
但现在依然存在的问题是请求数据的id问题
2016年04月07日 03点04分 2
level 1
双鱼XN 楼主
现在还有的问题就是如何控制异步请求发送时的数据。autoParam这个参不能用,根本没有返回结果,可见后台不是按照ztree的方法写的。那么我只能通过otherParam进行数据控制,这样问题就来了,虽然每次请求的参数一致,但参数值是不同的,就如同ztree原生方法中需要传递节点id一样,这里我该怎么做?用beforeAsync不行,这个方法只接受true/false返回值
2016年04月07日 06点04分 3
好吧,看了一圈感觉是autoParam没起作用,和后台的关系应该不大,现在又有个问题,为什么不起作用?我哪里写错了吗?
2016年04月07日 06点04分
level 1
双鱼XN 楼主
刚才在源码中打了断点,发现node未定义,所以autoParam根本没执行。我现在已经不清楚该怎么办了。求大神指教。异步加载根节点,每次点击父元素时也会重新请求
var setting = {
async: {
enable: true,
url:"",
otherParam:{"userLogicId":userLogicId,"tenantCode":tenantCode},
autoParam:["id=parentId"],
dataType:'JSON',
dataFilter: filter
}
}
function filter(treeId, parentNode, responseData) {
var childNode = [];
if (!responseData) return null;
for (var i=0, len=responseData.length; i < len; i++) {
childNode.push({
name: responseData[i].name,
logicId: responseData[i].logicId,
parentId: responseData[i].parentId,
isParent: responseData[i].leaf== 0 ? true : false,
fullpath: responseData[i].fullpath
})
}
return childNode;
}
$(function(){
$.fn.zTree.init($("#treeDemo"), setting, null);
})
2016年04月07日 07点04分 4
level 1
双鱼XN 楼主
好吧,最终我把源码改了
2016年04月07日 08点04分 5
在哪里改的
2017年11月06日 07点11分
1