Невозможно увидеть всплывающее окно nativescript-vue # ref- nativescript-popup plugin

Я пытаюсь реализовать функцию всплывающего окна для одного из своих мобильных приложений, где мне нужно всплывающее окно со стрелкой на значке разных игроков и отображать информацию. игрока в поповере. для этого после некоторых исследований и разработок я обнаружил, что могу использовать этот плагин nativescript-popup. Но я не вижу всплывающего окна, когда пытаюсь его реализовать. Вот мои коды. Это не дает никаких ошибок, но и не открывает всплывающих окон.

Home.vue

<template>
    <Page actionBarHidden="true">
       <Button @tap="openPopup" ref="btn" style="width:100;height:40;"/>
    </Page>
</template>
<script>
    import { StackLayout } from 'tns-core-modules/ui/layouts/stack-layout';
    import { Label } from 'tns-core-modules/ui/label';
    import { ScrollView } from 'tns-core-modules/ui/scroll-view';
    import { Popup } from 'nativescript-popup';
    import Test from './Test'
    export default {
    components: {
        Test
    },
    data() {
        return {
            popup: Popup
        }
    },
    methods: {
        _showPopup(source, view) {
            this.popup = new Popup({
                height: 30,
                width: 80,
                unit: '%',
                elevation: 10,
                borderRadius: 25
            });
            this.popup.showPopup(source, view).then(data => {
                console.log('aaaa',data);
            }).catch(error => {
                console.log('aaaa',error);
            });
        },
        openPopup(arg) {
            //this._showPopup(this.$refs.btn.nativeView, Test);
            const stack = new StackLayout();
            stack.height = '100%';
            const lbl = new Label();
            lbl.text = 'Osei';
            stack.addChild(lbl);
            const sv = new ScrollView();
            sv.content = stack;
            this._showPopup(this.$refs.btn.nativeView, sv);
        }
    }
</script>

Test.vue

<template>
    <StackLayout>
        <Label text="NativeScript is the bomb.com" color="#ff4801" fontSize="22" textWrap="true"></Label>
    </StackLayout>
 </template>

Подскажите, пожалуйста, что я делаю не так? Любая помощь будет оценена по достоинству.

Примечания: После обновления кода функции openPopup () ее работа и всплывающее окно открывается корректно. Как я могу использовать его напрямую с компонентом Vue (Test.vue) вместо создания представления внутри функции?


person Rakesh Sojitra    schedule 11.02.2019    source источник


Ответы (1)


Этот плагин не имеет явной поддержки Vue, поэтому вы не можете передать Test, который, я полагаю, является компонентом Vue, вам нужно либо передать {N} View, либо собственный экземпляр представления.

Изменить: вы можете прагматично создать экземпляр компонента Vue и передать nativeView корневого элемента во всплывающее окно.

Образец игровой площадки

person Manoj    schedule 11.02.2019
comment
Да, Test - это компонент vue. Не могли бы вы дать некоторое представление о том, как передать View или собственный экземпляр представления. Это как компонент загрузки, дать ref, а затем использовать его, как указано выше, кнопка ref? - person Rakesh Sojitra; 11.02.2019
comment
Я добавил примечание, где это работает, не могли бы вы с этим помочь? @manoj - person Rakesh Sojitra; 11.02.2019
comment
Код выглядит немного крупнее, но спасибо за помощь. Если есть какой-либо другой короткий путь, напишите здесь в любое время позже. - person Rakesh Sojitra; 11.02.2019
comment
Это не очень долго, вряд ли еще 4 строки из того, что у вас было изначально. Создать экземпляр, установить и уничтожить. Не более того. - person Manoj; 11.02.2019
comment
да, определенно его сокращали раньше, но я думал, есть ли что-то вроде встроенной функции, откуда мы можем загрузить nativeView, передав компонент или что-то в этом роде. На данный момент это круто, так что никаких проблем. :) - person Rakesh Sojitra; 11.02.2019
comment
Небольшая проблема, с которой я столкнулся в iOS, можете ли вы мне помочь? Когда я открываю всплывающее окно в первый раз, проблем нет, но после закрытия во второй раз я открываю всплывающее окно с ошибкой, например [Error: View already has a parent. View: AbsoluteLayout(220) Parent: Frame<default>] @Manoj - person Rakesh Sojitra; 26.02.2019
comment
Это происходит только тогда, когда вы пытаетесь добавить View к родительскому элементу, когда он уже есть. Поделитесь образцом игровой площадки, где можно воспроизвести проблему. - person Manoj; 26.02.2019
comment
Можете ли вы проверить свой образец Playground в iOS. В андроиде работает корректно. то же самое в моей реализации. та же ошибка [Error: View already has a parent. View: StackLayout(220) Parent: Frame<default>] - person Rakesh Sojitra; 26.02.2019
comment
Думаю, проблема с плагином, он давно не обновлялся. Попробуйте это - play.nativescript.org/?template=play-vue&id=udD9L3&v = 2 - person Manoj; 26.02.2019