Доступ к окну браузера из пункта меню в электронном виде - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь добавить пункт меню, который будет загружать URL-адрес для окна настроек компонента vue. Я последовал за этим, чтобы создать мое меню .

Проблема в том, как я могу щелкнуть здесь, чтобы получить доступ к методу внутри моего метода createWindow (), в котором я могу инициировать загрузку browserWindow для установки файла.

Я попытался добавить прослушиватель кликов, который пытается получить доступ к функции в createWindow (), но безуспешно

mainmenu.js

const {Menu} = require('electron')
const electron = require('electron')
const app = electron.app

const template = [
  {
    label: 'Custom',
    submenu: [
      {
        label: 'Setting',
        click (item, focusedWindow) {
          loadSettingWindow()
        }
      }
    ]
  }
]

const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)

index.js

'use strict'

import { app, BrowserWindow } from 'electron'

let mainWindow
let serviceWindow

const winURL = process.env.NODE_ENV === 'development'
  ? `http://localhost:9080`
  : `file://${__dirname}/index.html`

function createWindow () {
  /**
   * Initial window options
   */
  mainWindow = new BrowserWindow({
    height: 563,
    useContentSize: true,
    width: 1000
  })

  mainWindow.loadURL(winURL)

  mainWindow.on('closed', () => {
    mainWindow = null
  })

  function loadSettingWindow () {
    console.log('trigger setting window here')
  }
  require('./mainmenu')
}
app.on('ready', createWindow)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  if (mainWindow === null) {
    createWindow()
  }
})

Я ожидал, что событие click вызовет функцию loadSettingWindow, но, похоже, к ней нет доступа.

1 Ответ

0 голосов
/ 28 апреля 2019

Вы не можете получить прямой доступ от основного к процессу визуализации.Но вы можете использовать IPC для отправки сообщения процессу рендеринга и обработки его там, где существует Vuejs.

...