【发布时间】:2014-08-04 17:17:40
【问题描述】:
所以我遇到了以下问题。我需要为我的 jstree 创建一个动态菜单。所以:
var default_dict = {
create: false,
rename: false,
remove: false,
ccp: false
};
for (one in viewers) {
var details = viewers[one];
alert(details['module']);
alert(details['classname']);
default_dict[one] = {
label: 'View in: ' + one,
action: function (obj) {
doLaunch($project.id, nodeId, obj.one.module, obj.one.classname, obj.attr("dataType"))
},
seperator_after: false,
seperator_before: false
}
}
return default_dict;
现在这是我的createMenuItems 函数的主要部分,它返回我的菜单项。现在我检查了,模块和类名在:
alert(details['module']);
alert(details['classname']);
但正如您所见,我希望每个项目的操作都是使用 it.s 对应模块和类名数据启动的。但是从我可以看到的实际评估中: 行动:
function (obj) {
doLaunch($project.id, nodeId, obj.one.module, obj.one.classname, obj.attr("dataType"))
}, is done after the initialization of the tree. So now I'm in the following situation:
假设观众如下:
{ 'viewer1' : { 'module': 'Module_one', 'classname' : 'Classname_one' }, 'viewer2' : { 'module' : 'Module_two', 'classname' : 'Classname_two' } }
在树初始化中,它被正确解析,我得到标记为:“在 viewer1 中查看”和“在 viewer2 中查看”的项目。但是,当我单击“在 viewer1 中查看”并评估操作功能时,详细信息现在包含 Viewers2 模块和类名,因此完成了错误的启动。我希望我正确地解释了我的问题。
现在我是 js 的初学者,所以也许我缺少一些基本的东西。任何建议将不胜感激。
问候, 波格丹
【问题讨论】:
标签: javascript jstree