Когда я максимизирую окно с помощью перетаскивания, электронный заголовок испускает событие «максимизировать». Я хочу вызвать метод «максимизировать», который существует в области «экспорт по умолчанию». Как я могу позвонить?

<template>
    <div class="window-titlebar">
        <div class="title">{{ title }}</div>
    </div>
</template>

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

export default {
    name: 'window-titlebar',
    data() {
        return {
           title: false
        }
    },
    methods: {
        maximize: function() {
            this.title = true;
        }
    }

}

ipcRenderer.on('maximize', () => {
    // I want to call 'maximize' method here
})

</script>
0
Mireli Eyyubzade 28 Окт 2019 в 00:17

2 ответа

Лучший ответ

Было бы лучше зарегистрировать обработчик событий на самом компоненте, таким образом вы можете связать существование обработчика событий со временем жизни компонента, и обработчик событий будет выполняться в контексте экземпляра компонента.

export default {
    name: 'window-titlebar',
    data() {
        return {
            title: false
        }
    },
    created() {
        ipcRenderer.on('maximize', this.onMaximize)
    },
    destroyed() {
        ipcRenderer.off('maximize', this.onMaximize)
    },
    methods: {
        onMaximize() {
            this.title = true
        }
    }
}
1
Decade Moon 27 Окт 2019 в 21:58

В родителе определите ссылку

<WindowTitlebar ref="titlebar" />

Затем вызовите метод через $refs

this.$refs.titlebar.maximize();
1
Stephen Thomas 27 Окт 2019 в 21:30