【问题标题】:Electron - Call function from viewElectron - 从视图中调用函数
【发布时间】:2016-08-28 08:20:56
【问题描述】:

您好,我是电子新手,我遇到了一个问题,我想在单击按钮上执行一个命令,因为我正在使用节点的 child_process。我已经为 app.on('ready') 编写了一个代码,它工作正常。但我需要它点击下面是我的代码请帮助..

function runExec() {
 child_process.exec('pwd', function(error, stdout, stderr){
  if(!error){
   console.log(stdout);
   setTimeout(function(){
    child_process.exec('ls -la', function(error, stdout, stderr){
      console.log(stdout);
    });
    }, 3000);
   }
 });
}

我想用 jquery/index.html 点击运行这个函数 HTML代码在这里:

<div class="col-sm-12 controls">
  <a id="btn-login" href="#" class="btn btn-success btnLogin">Login </a>
</div>

当我在点击登录按钮时点击 API 并获得响应时,我也想在同一次点击或真正响应时调用该函数..

任何想法..

提前感谢:)

【问题讨论】:

    标签: electron atom-editor


    【解决方案1】:

    所以,它在您的主进程中工作,但您想在有人单击渲染器进程中的按钮时触发它?

    您需要做的是在您的主进程中导出功能,然后使用 Electron 的 remote 模块将其拉入您的渲染器进程。

    在你的主进程中,添加以下代码:

    exports.runExec = runExec;
    

    当您导入 remote 对象时,这会将您的 runExec 函数导出为 runExec

    现在,在您的渲染器代码中(我假设您的主文件名为 main.js,但它可能被命名为其他名称,这完全可以,只需将 ./main 替换为您的文件名第二行):

    var electron = require('electron');
    var runExec = electron.remote.require('./main').runExec;
    
    var loginButton = document.querySelector('. btnLogin');
    
    loginButton.addEventListener('click', function () {
      runExec();
    });
    

    Electron 的remote 模块充当主进程的代理。所以当有人点击“登录”按钮时,你的渲染器进程会从主进程触发runExec函数。

    【讨论】:

    • 是的,如果我在 app.on('ready') 事件中调用它,这个函数就可以正常工作
    • 史蒂夫我已经添加了“exports.runExec = runExec;” main.js 中的行,其余代码粘贴在 html 文件中,但它给我一个错误“未捕获的 TypeError:无法读取 null 的属性 'addEventListener'”并且函数也不起作用:(
    • 我已经完成了 :) 感谢您的帮助 我是在“ipc”的帮助下完成的
    猜你喜欢
    • 2016-06-13
    • 2020-12-19
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多