父组件传值给子组件 -- 以封装公用slide组件为例

父组件

<template>
<section class="banner">
<slide :imgList="imgList" :options="swiperOption" width="100%" height="480"></slide>
</section>
</template> <script>
import Slide from "@/components/slide";
import img1 from "@/assets/1.jpg";
import img2 from "@/assets/2.jpg";
import img3 from "@/assets/3.jpg";
import img4 from "@/assets/4.jpg";
import img5 from "@/assets/5.jpg";
export default {
data() {
return {
swiperOption: {
// swipe官方的api所有参数都可以用
},
imgList: [img1, img2, img3, img4, img5]
};
},
components: {
Slide
}
};
</script>

子组件

<template>
<swiper :options="swiperOption">
<swiper-slide v-for="(item, index) in imgList" :key="index">
<img :src="item" :width="width" :height="height" alt>
</swiper-slide>
<!-- Optional controls -->
<div class="swiper-pagination" slot="pagination"></div>
<div class="swiper-button-prev" slot="button-prev"></div>
<div class="swiper-button-next" slot="button-next"></div>
</swiper>
</template> <script>
import "swiper/dist/css/swiper.css";
import { swiper, swiperSlide } from "vue-awesome-swiper"; export default {
components: {
swiper,
swiperSlide
},
props: ["imgList", "options", "width", "height"],
data() {
return {
swiperOption: {
// 所有的参数同 swiper 官方 api 参数
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev"
},
// 分组模式
// slidesPerView: 3,
// spaceBetween: 30,
// 是否循环
loop: true,
pagination: {
el: ".swiper-pagination",
clickable: true
}
}
};
},
computed: {},
created() {
// 合并用户设置的参数
this.swiperOption = Object.assign(this.swiperOption, this.options);
},
mounted() {
// current swiper instance
// 然后你就可以使用当前上下文内的swiper对象去做你想做的事了
//console.log("this is current swiper instance object", this.swiper);
// this.swiper.slideTo(3, 1000, false);
}
};
</script> <style lang='less'>
</style>

子组件传值给父组件

父组件

<template>
<main>
<section class="container thumb">
<p class="lead">{{ msg }}</p>
<thumb @listenToChildEvent="foo"></thumb>
</section>
</main>
</template> <script>
import Thumb from "@/components/thumbnail";
export default {
data() {
return {
msg: "子组件将要修改父组件的值"
};
},
components: {
Thumb
},
methods: {
foo(data) {
console.log(data);
this.msg = data;
}
}
};
</script> <style lang="less">
.thumb {
margin-top: 20px;
}
</style>

子组件

<template>
<div class="row">
<div class="col-sm-6 col-md-3" v-for="(item, index) in 4" :key="index">
<div class="thumbnail">
<img src="@/assets/thumb.svg" alt="...">
<div class="caption">
<h3>Thumbnail label</h3>
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Vero vitae mollitia quos dolores ullam suscipit temporibus sed ex sapiente quisquam impedit nobis, consectetur sit, earum dolor aspernatur perspiciatis distinctio odio?</p>
<p>
<a href="javascript:;" @click="handleClick(index)" class="btn btn-primary" role="button">修改父组件的值</a>
</p>
</div>
</div>
</div>
</div>
</template> <script>
export default {
methods: {
handleClick(index) {
console.log(index);
this.$emit("listenToChildEvent", "我是第"+ (index + 1) +"个修改父组件值的按钮");
}
}
};
</script> <style>
</style>

最新文章

  1. cocos2d-x3.2创建新项目失败的一种可能性(cygwin自带的python2.6被抢先执行)
  2. ArcGIS10.1 api for Flex开发用于ArcGIS 9.3时QueryTask &#39;Error #2032&#39;错误的解决方案
  3. 《深入理解Spark:核心思想与源码分析》(第2章)
  4. Ubuntu 12.04 root账户开启及密码重设
  5. javascript 调试技巧
  6. win10 mac地址修改器
  7. 解决Access连接 accdb 不可识别的数据库格式异常
  8. js重写原型对象
  9. docker学习笔记13:Dockerfile 指令 WORKDIR介绍
  10. Ubuntu 开机启动是出现 grub rescue 解决办法
  11. Redis之(二)数据类型及存储结构
  12. 《java第一季之入门篇》的想法
  13. Python编程从入门到实践笔记——if语句
  14. Confluence 6 查看系统信息
  15. drupal 2006 mysql server has gone away
  16. 黑暗幽灵(DCM)木马详细分析
  17. js判断输入的字符是否是汉字
  18. 社会地位即服务, Status as a Service (二): 社交网络的投资回报率 (ROI)
  19. Unity2D 面向目标方向
  20. Linux终极渗透测试命令总结

热门文章

  1. 思维题+贪心——牛客多校第一场C
  2. NX二次开发-UFUN遍历函数UF_OBJ_cycle_objs_in_part
  3. linux下df查看空间已经占用%100,但是找不到大文件的解决方法
  4. 剑指offer——23调整数组顺序使奇数位于偶数前面
  5. OSI七层网络模型分别是哪七层?各运行那些协议?
  6. Ant属性文件
  7. Python从入门到精通视频(全60集)✍✍✍
  8. python 18 函数基础二
  9. 在CentOS6上安装mysql5.7报错
  10. Vue项目如何关闭Eslint检测