cari

Rumah  >  Soal Jawab  >  teks badan

data vue tidak dikemas kini tetapi data berubah

Saya gila tentang ini.

Berikut ialah kod, komponen yang saya gunakan dalam borang saya untuk menunjukkan pratonton video apabila menampal url ke dalam input:

<template>
  <div class="row">
    {{embedData}}
    <input v-model="embedData" name="content[body]" id="content_body">
    <div class="col-md-6">
      <div class="form-group">
        <div class="form-group url optional content_video_url form-group-valid">
          <label for="content_video_url" class="url optional">Url del video</label>
          <input @change="forceRerender" v-model="url" type="url" value="" name="content[video_url]" id="content_video_url" class="form-control is-valid string url optional">
        </div>
      </div>
    </div>
    <div class="col-md-6">
      <div class="video-responsive"
        <o-embed ref="embed" :url="url" :key="componentKey"></o-embed>
      </div>
    </div>

  </div>
</template>

<script>

import oEmbed from './oEmbed'
import EventBus from '../utils/eventBus'

export default {
  components: {
    oEmbed
  },

  props: {
    video_url: String,
    video_caption: String
  },

  created: function() {
    this.url = this.video_url;
    this.caption = this.video_caption;
  },
  mounted: function() {
    EventBus.$on('HTML', function (payLoad) {
      this.embedData = payLoad
      console.log('payLoad:' + this.embedData);
      console.log('arrived');
    });
  },
  data: function() {
    return {
      url: '',
      caption: '',
      componentKey: 0,
      embedData: ''
    }
  },
  methods: {
    forceRerender () {
      this.componentKey = this.componentKey + 1;
    }
  }
}
</script>

o-embed ialah komponen, saya menambah fungsi pelepasan bas yang mudah apabila komponen dikemas kini:

mounted: function() {
    EventBus.$on('HTML', function (payLoad) {
      this.embedData = payLoad
      console.log('payLoad:' + this.embedData);
    });
  }

Jika saya menyemak log konsol saya mendapat ini

payLoad: <iframe src="https://player.vimeo.com/video/596287904?app_id=122963&amp;h=d77f5dc57c" width="426" height="240" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen title="Raritan Bay Cruisers-Hopelawn New Jersey CruisebNight 8-31-2021.wmv"></iframe>

Semua fikir berfungsi, this.embedData 看起来不错,我有日志,但是当我在我的视图中渲染 embedData apabila ia kosong.

Saya telah memasukkan maklumat tambahan: Saya memaksa pemaparan semula komponen terbenam, tetapi saya rasa ia tidak berkaitan.

Ada idea?

P粉071626364P粉071626364322 hari yang lalu476

membalas semua(2)saya akan balas

  • P粉006540600

    P粉0065406002024-02-18 12:05:48

    Mythos menemui isu ini (sekurang-kurangnya satu daripadanya). Templat misai (kurung kerinting berganda) mentafsir kandungan sebagai teks biasa, bukan html. Jika anda ingin menyuntik html mentah ke dalam halaman anda, anda harus melakukan ini

    Sebaliknya (https://v2.vuejs.org/v2 /guide/syntax.html#Raw-HTML)

    balas
    0
  • P粉998920744

    P粉9989207442024-02-18 09:06:46

    Anda menggunakan fungsi tanpa nama. this Fungsi tanpa nama dalaman tidak menyediakan konteks komponen.

    Cuba gunakan fungsi anak panah:

    EventBus.$on('HTML', (payLoad) => {
          this.embedData = payLoad
          console.log('payLoad:' + this.embedData);
        });

    balas
    0
  • Batalbalas