首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >contextMenu单击处理程序正在为错误的菜单项执行命令

contextMenu单击处理程序正在为错误的菜单项执行命令
EN

Stack Overflow用户
提问于 2018-06-03 21:30:26
回答 1查看 78关注 0票数 0

在我的电子应用程序中,我有读取JSON文件并插入菜单项的代码:

代码语言:javascript
复制
var settingsdata = fs.readFileSync('./settings.json');
var jsonContent = JSON.parse(settingsdata);
for (var i = 0; i < jsonContent.length; i++) {
    var obj = null;
    obj = jsonContent[i];
    console.log(obj.label);
    console.log(obj.parameters);
    contextMenu.insert(0,new MenuItem({
        label: obj.label,
        click: function() {
            child_process.execFileSync(vExecutablePath, obj.parameters)
        },
        position: 'before'
    }))
}

问题出在插入菜单项的单击处理程序上。它只对插入的最后一个项目执行命令,而不是单独执行,即使console.log(obj.parameters)为每个项目显示了正确的不同参数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 07:57:47

您应该在for循环中将var替换为let

var的作用域是函数,因此在执行click处理程序时,i将被设置为jsonContent.length

当在for循环中使用let时,您将在每次迭代中获得一个新变量,该变量可在闭包中使用(即在本例中的click处理程序中)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50666929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档