javascript - 如何从父vuejs向子组件传递数据

标签 javascript vue.js

如何将图像 url 传递给此 vue 组件?我将代码移动到一个单独的 php 文件中,该文件将保存 <script> Vue 使用的 tag,但它不会识别从父组件传递的数据。

Vue.component('theme-parallax',{
  template: '#parallax-tpl',
  data(){
    return{
      pageData: []
    }
  }
});

组件标记 注意:page.embedded.parallax_image将在父组件中正常工作。我是新手,所以为了获取数据,我在父组件中使用了一个方法,如果有人能解释我如何将数据从主 vue 实例传递到所有组件,那就太好了。

<script type="text/x-template" id="parallax-tpl">
    <div class="row m-0">
        <div class="col-sm-12 col-md-12 col-lg-12 col-parallax p-0" v-prlx.background="{ speed: 0.08 }" :style="{ height: '70vh', backgroundImage: 'url('+page.embedded.parallax_image+')', backgroundSize: 'cover' }"></div>
    </div>
</script>

这就是我使用该组件的方式

<script type="text/x-template" id="home-tpl">
  <div class="container-fluid p-0">

    <div class="row m-0" v-for="page in pageData">
      <div class="col-sm-12 col-md-12 col-lg-12 p-0" v-if="page.embedded.primary_featured_image">
        <img class="img-fluid w-100" :src="page.embedded.primary_featured_image">
      </div>
      <div class="col-sm-12 col-md-12 col-lg-12 p-5 mt-5">
        <h1>{{ page.title.rendered }}</h1>
      </div>
      <div class="col-sm-12 col-md-12 col-lg-12 p-5 mt-5" v-html="page.content.rendered"></div>   
    </div>

    <theme-section data-section="about" data-section-align="left"></theme-section>

    <theme-parallax v-for="page in pageData" ></theme-parallax>

    <theme-section data-section="office" data-section-align="right"></theme-section>

  </div> <!-- end container-fluid -->
</script>

最佳答案

您需要在组件中创建一个属性并将页面从父级传递给它。

例如父模板

<theme-parallax v-for="page in pageData" :page="page" :key="page.id"></theme-parallax>

如果页面没有唯一的 ID,您应该为键使用唯一的属性。

然后在组件中

Vue.component('theme-parallax',{
  template: '#parallax-tpl',
  props: {
    page: {
      type: Object,
      default: function() {return null;},
    }
  },
  data(){
    return{
      pageData: []
    }
  }
});

关于javascript - 如何从父vuejs向子组件传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61382956/

相关文章:

javascript - 如何让机器人提及 channel ?

javascript - requestPointerLock() 在 Vue.js 组件内部不起作用

vue.js - 如何在 Nuxt.js 中创建动态 'Breadcrumbs'

javascript - 在Vue CoreUI中动态添加导航项

vue.js - Vuetify - 将字段添加到数据表页脚?

javascript - 有没有办法在这个 v-for 中正确使用索引而不出现错误

javascript - 如何在lodash中实现多个if语句

PHP 函数内的 Javascript Ajax 数据

javascript - 检测文件是否已在 JavaScript 中打开

javascript - 如何删除 div 的可拖动事件?