Vue.js: Как вы вызываете специфичные для компонента методы вне компонента? - PullRequest
2 голосов
/ 24 мая 2019

Цель здесь - использовать платформу OpenTok WebRTC для веб-приложения видеочата, созданного с помощью vue.Вот пример OpenTok в Vue .

Я запутался в том, где вызывать определенные методы для издателя, потому что он вложен в компонент session.vue.Я хочу вызвать такие методы, как:

1) Прекратить публикацию 2) Измените издателя на источник из видео вместо веб-камеры

Это веб-API .

Должен ли я писать методы, которые влияют на издателя, в дочернем компоненте publisher.vue или я должен делать это в родительском компоненте, который вызывает издателя?

Publisher.vue

<template>
    <div> </div>
</template>

<script>
import OT from "@opentok/client";

export default {
    name: "publisher",
    props: {
        session: {
            type: OT.Session,
            required: false
        },
        rlive: Boolean,
        opts: {
            type: Object,
            required: false
        }
    },
    mounted: function() {
        // console.log(this.rlive)
        console.log("publisher created")
        console.log(this.session)
        const publisher = OT.initPublisher(this.$el, this.opts, err => {
            if (err) {
                this.$emit("error", err);
            } else {
                this.$emit("publisherCompleted");
            }
        });
        this.$emit("publisherCreated", publisher);

        const publish = () => {
            this.session.publish(publisher, err => {
                if (err) {
                    this.$emit("error", err);
                } else {
                    this.$emit("publisherConnected", publisher);
                }
            });
        };


        if (this.session && this.session.isConnected()) {
            // console.log("this.session && this.session.isConnected()")

            publish();

            // console.log(publisher)
        }
        if (this.session) {
            console.log("this.session")
            console.log(publisher)
            this.session.on("sessionConnected", publish);

        }

        if(!this.session){
            console.log("!this.session")
        }
    },
    beforeDestroy: function(){
        console.log("before destroy");
        console.log(publisher)
        console.log(publish)
        //here is where I want to KEEEEEL!
        // console.log(publisher)
        // console.log(this.session)
    }
};
</script>
...