электронный ipcRenderer от одного файла компонента Vue.js - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь использовать ipcRenderer Electron внутри моего компонента файла Vue, чтобы заполнить некоторые данные. Достаточно просто вызвать ipcRenderer.send(...), но в ответе я хочу обновить каждый экземпляр моего компонента ответным сообщением. Я думаю, что комментарий в ipcRenderer.on(...) лучше всего объясняет мою проблему. Есть ли хороший способ сделать это. Я совершенно новичок в JS.

<template>
  <v-container fluid>
    <v-btn @click="do_action()">{{title}}</v-btn>
    <v-textarea v-model="response_message">
    </v-textarea>
  </v-container>
</template>

<script>
  const { ipcRenderer } = require('electron')

  export default {
    props: ['title'],
    data: function(){
      return {
        response_message: "Original Message"
      }
    },
    methods: {
      do_action: function() {
        ipcRenderer.send('cmnd_foo')
      }
    },
  }

  ipcRenderer.on('cmnd_foo-reply', (event, a_new_message) => {
    // obviously this.response_message isn't in scope...
    // how can I get this intent to work
    this.response_message = a_new_message
  })
</script>

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Просто добавьте remote в конце:

const { ipcRenderer } = require('electron').remote
0 голосов
/ 07 июня 2019

Кажется, я нашел способ сделать это.Может быть, есть еще лучший способ?

<template>
  <v-container fluid>
    <v-btn @click="do_action()">{{title}}</v-btn>
    <v-textarea v-model="response_message">
    </v-textarea>
  </v-container>
</template>

<script>
  const { ipcRenderer } = require('electron')

  var catcher = 0;
  function setMessage(msg) {
    this.response_message = msg
  }

  export default {
    props: ['title'],
    data: function(){
      return {
        response_message: "Original Message"
      }
    },
    methods: {
      do_action: function() {
        catcher = setMessage.bind(this)
        ipcRenderer.send('cmnd_foo')
      }
    },
  }

  ipcRenderer.on('cmnd_foo-reply', (event, a_new_message) => {
    catcher(a_new_message);
  })
</script>
...