Модальная навигация и закрытие - PullRequest
1 голос
/ 13 мая 2019

У меня есть два сценария

  1. При открытии модального режима и после некоторой навигации внутри модального окна мне необходимо закрыть модальное окно, однако, когда я вызываю this.$modal.close() на последней странице навигации, используя всегда один и тот же frame, модальный режим не закрывается.

  2. Есть ли способ, при котором у вас есть несколько модалов (один открывает следующий), а на последнем закройте их все? На андроиде я просто жду выполнения каждого модального обещания, но на iOS это не работает.

Вот пример обоих сценариев https://play.nativescript.org/?template=play-vue&id=OVxmoC&v=2

1 Ответ

2 голосов
/ 13 мая 2019

Вы можете вызвать this.$modal.close() только из корня модального компонента, если вы вызываете его с любого другого вложенного уровня, он будет просто проигнорирован. Если вы действительно хотите закрыть модал после навигации, я думаю, вы должны передать ссылку $modal вниз по дереву навигации, возможно, через props. Вы можете даже рассмотреть возможность использования Event Bus / Global Service, если вам так проще.

Modal.vue

           this.$navigateTo(Secondary, {
                frame: "modal-frame",
                props: {
                    parentModal: this.$modal
                }
            });

Secondary.vue

export default {
    props: ["parentModal"],
    data() {
        return {};
    },
    methods: {
        onTap: function() {
            if (this.parentModal) this.parentModal.close();
            else this.$modal.close();
        }
    }
};

Обновленная игровая площадка

...