Как вызвать методы компонента VueJs

101
12 июня 2021, 14:00

Создаю компонент диалога.

Компонент vue, как обычно, состоит из <template> <script> <style>.

От компонента требуется простой апи executeDialog(anyButtonClickedCallback).

Я могу вызвать любой метод из секции methods, но не понятно на каком экземпляре он будет вызван, да и скорее всего так делать неправильно.

Я прочитал про общение с компонентами, уяснил одно - если хотим передать информацию компоненту - делаем это через props, если хотим обратную связь от компонента, то делаем это через события, на которые мы подписываемся в parent-компоненте. Это мне подходит, но не в полной мере.

Собственно сейчас секция <script> у компонента выглядит примерно так:

export default {
    components: {...},
    data() {
        return {
            position: {...}
        }
    },
    props: {
        width: {type: String, required: true},
        header: {type: String, required: true},
        buttons: {...}
    },
    methods: {
        drag(event){...},
        dlialogButtonClick(buttonKey){
            this.$emit("dialog-button-click", buttonKey);
        }
    },
    computed: {...}
}

В таком случае, например, видимостью диалога приходится управлять вручную. Это переключение видимости, обработка событий требует выделения этой логики в отдельные функции родителя. Хотелось бы это всё инкапсулировать в самом компоненте.

Как такие проблемы принято решать во vue? Какие идеи, подходы?

READ ALSO
Алгоритм поиска подстроки в массиве строк (Javascript)

Алгоритм поиска подстроки в массиве строк (Javascript)

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

82
Почему не работает вызов функции переданной через props?

Почему не работает вызов функции переданной через props?

В родительском компоненте есть такая функция

98
Как из отформатированной даты, вернуть её обратно к moment

Как из отформатированной даты, вернуть её обратно к moment

Есть дата: moment()format('L') , как вернуть её обратно к moment? Если есть другие варианты, чтобы прибавить дни, они тоже подойдут, но пожалуйста, без парсинга...

102