在使用 zTree 的时候,为了统一设置,就提取了一些公共的部分作为公共函数:类似这样:
zTreeInit:function(treeID,zOpts,data,callback) {
//zTree arguments obj default
var zTree_arg = {
setting : {
//其他设置,省略
async: {
//Set zTree asynchronous loading mode on/off.
enable: false,//closed
url: "http://host/getNode.ht",
autoParam: [],
contentType: "application/json",
dataFilter: null,//ajaxDataFilter, //function callback
dataType: "text",
otherParam: null,
type: "post"
}
}
} ;
zOpts = zOpts || {} ;
$.extend(true,{},zTree_arg,zOpts) ;
//init
this.rootObj = $.fn.zTree.init($("#"+treeID),zTree_arg.setting,data) ;
if(typeof callback === "function") {
callback.call(arguments);
}
}
这样,调用者传递异步加载请求参数的时候节点async
会变成这样:
async: {
enable: true,
url: url,
otherParam: {
cTenantId: v1,
userId: v2
}
}
这时候,服务器端方法接收上面两个参数方式如下:
public String fun(String cTenantId, String userId) {
// do sth
}
如此: 方法fun
不能接收到前端传递过来的这两个参数的值(值为 null),当我改变公共函数参数的拷贝方式如下:
$.extend(true,zTree_arg,zOpts) ;
或者
$.extend(false,{},zTree_arg,zOpts) ;
就可以正常接收了,我看了下 jQuery 的 extend 方法,没有看明白,看到一半就蒙了,请明白的 V 友给我讲解下,非常感谢! 我不想这么不明不白的解决问题。
非常感谢!
jQuery : v1.11.1 ; zTree: v3.5
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.