recommend.vue

  1. <script type="text/ecmascript-6">
  2. import Slider from 'base/slider/slider'
  3. import {getRecommend, getDiscList} from 'api/recommend'
  4. import {ERR_OK} from 'api/config'
  5.  
  6. export default {
  7. name: 'Recommend',
  8. data() {
  9. return {
  10. recommends:[]
  11. }
  12. },
  13. components: {
  14. Slider
  15. },
  16. created() {
  17. this._getRecommend()
  18. },
  19. methods: {
  20. _getRecommend(){
  21. getRecommend().then((res)=> {
  22. if(res.code === ERR_OK){
  23. console.log(res.data.slider);
  24.  
  25. this.recommends = res.data.slider
  26. }
  27. })
  28. }
  29. }
  30.  
  31. }
  32. </script>

  在recommend.vue中created执行this._getRecommend(),这是个异步操作,可能需要几秒, 但是slide.vue中的mounted钩子已经渲染执行,

但slide.vue中插槽无内容,出错

  1. <template>
  2. <div class="slider" ref="slider">
  3. <div class="slider-group" ref="sliderGroup">
  4. <slot>
  5. </slot>
  6. </div>
  7. <div class="dots">
  8. <span class="dot"></span>
  9. </div>
  10. </div>
  11. </template>
  12.  
  13. <script type="text/ecmascript-6">
  14. import {addClass} from 'common/js/dom'
  15. import Bsrcoll from 'better-scroll'
  16.  
  17. export default {
  18. name: 'Slider',
  19. props: {
  20. loop: {
  21. type: Boolean,
  22. default: true
  23. },
  24. autoplay: {
  25. type: Boolean,
  26. default: true
  27. },
  28. interval: {
  29. type: Number,
  30. default: 4000
  31. }
  32. },
  33. mounted() {
  34. setTimeout( () => {
  35. this._setSliderWidth()
  36. this._initSlider()
  37. },20)//浏览器涮新时间
  38. },
  39. methods: {
  40. _setSliderWidth(){
  41. //获取sliderGroup子元素dom集合
  42. this.children = this.$refs.sliderGroup.children
  43.  
  44. let width = 0
  45. let slideWidth = this.$refs.slider.clientWidth//slider窗口宽度
  46.  
  47. for (let i =0; i < this.children.length; i++) {
  48. let child = this.children[i]
  49.  
  50. addClass(child, 'slider-item')
  51.  
  52. child.style.width = slideWidth + 'px'
  53.  
  54. width += slideWidth
  55.  
  56. }
  57. if(this.loop){
  58. width += 2*slideWidth
  59. }
  60. this.$refs.sliderGroup.style.width = width + 'px'
  61.  
  62. },
  63. _initSlider(){
  64.  
  65. }
  66. }
  67.  
  68. }
  69. </script>

所以在父级添加v-if="recommends.length",来判断recommends是否得到

  1. <div class="slider-wrapper" v-if="recommends.length">
  2. <slider>
  3. <div v-for="item in recommends" :key="item.id ">
  4. <a :href="item.linkUrl">
  5. <img :src="item.picUrl" alt="" />
  6. </a>
  7. </div>
  8. </slider>
  9. </div>

mounted钩子问题的更多相关文章

  1. 从父子组件的mounted钩子的同步执行与页面的异步渲染看nextTick的用法

    最近复习vue的时候遇到了一个很奇怪的问题,我们直接从实例中看: <div id="app"> <child ref="child">& ...

  2. vue 使用同一组件,切换时不触发created、mounted钩子

    两个页面参数不同使用同一组件,默认情况下当这两个页面切换时并不会触发created或者mounted钩子. 方法一:通过watch $route的变化来做处理 watch: { $route() { ...

  3. vue中子组件的created、mounted钩子中获取不到props中的值问题

    父子组件通信 这个官网很清楚,也很简单,父组件中使用v-bind绑定传送,子组件使用props接收即可 例如: 父组件中: <template> <div> <head- ...

  4. Vue.js 系列教程 3:Vue-cli,生命周期钩子

    原文:intro-to-vue-3-vue-cli-lifecycle-hooks 译者:nzbin 这是 JavaScript 框架 Vue.js 五篇教程的第三部分.在这一部分,我们将学习 Vue ...

  5. Vue 实例中的生命周期钩子

    Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...

  6. Vue的钩子函数[路由导航守卫、keep-alive、生命周期钩子]

    前言 说到Vue的钩子函数,可能很多人只停留在一些很简单常用的钩子(created,mounted),而且对于里面的区别,什么时候该用什么钩子,并没有仔细的去研究过,且Vue的生命周期在面试中也算是比 ...

  7. vue 项目实战 (生命周期钩子)

    开篇先来一张图 下图是官方展示的生命周期图 Vue实例的生命周期钩子函数(8个)        1. beforeCreate             刚 new了一个组件,无法访问到数据和真实的do ...

  8. vue学习之生命周期和钩子函数

    参考文章:Vue2.0 探索之路——生命周期和钩子函数的一些理解 抛出问题: 我们有时候会在几个钩子函数里做一些事情,那么什么时候做,该在哪个函数里做? 生命周期简介 结合代码看el 和 data以及 ...

  9. vue 生命周期钩子的理解 watch computed

    一  理解vue的生命周期,首先需要注意几个关键字 1. el :选择器 2. $el:对应选择器的template模板(html代码) 3. render:也是vue实例中的一项,其参数更接近vue ...

随机推荐

  1. Ubuntu 16.04切换/home中文目录为英文目录

    其实这个方法是具有技巧性的,不建议使用. 1.先转换成英文 sudo gedit /etc/default/locale 将内容改为: LANG=”en_US.UTF-8″ LANGUAGE=”en_ ...

  2. Angularjs中添加ckEditor插件

    使用方法看注释.主要解决帮上ngModel的问题 angular.module('newApp') .directive('ckeEditor', function() { return { /* F ...

  3. Java序列化之readObjectNoData、readResolve方法

    Java序列化之readObjectNoData.readResolve方法 学习了:http://vyloy.iteye.com/blog/1240663 readResolve方法会在Object ...

  4. STL 笔记(五) 算法 algorithm

    在 STL 中,算法是一系列的函数模版.STL 提供了大概 70 个算法,由头文件 <algorithm>.<numeric>.<functional>组成. 头文 ...

  5. Spring技术内幕:Spring AOP的实现原理(五)

    7.Advice通知的实现 AopProxy代理对象生成时,其拦截器也一并生成.以下我们来分析下Aop是怎样对目标对象进行增强的.在为AopProxy配置拦截器的实现中,有一个取得拦截器配置过程,这个 ...

  6. FloatingActionMenu 向上弹出菜单

    本人在github上找到了一个FloatingActionsMenu,精简了其效果(原效果有上下左右四个方向)仅仅保留向上的效果,并做了一定的优化. github上的源代码:地址 ,精简后的源代码地址 ...

  7. oop_day06_抽象类、接口_20150814

    oop_day06_抽象类.接口_20150814 1.static final常量: 1)必须声明同一时候初始化.不能改动,类名点来訪问 2)常量名建议全部字母都大写 3)编译器编译时会直接替换为详 ...

  8. LeetCode 443. String Compression (压缩字符串)

    题目标签:String 这一题需要3个pointers: anchor:标记下一个需要存入的char read:找到下一个不同的char write:标记需要存入的位置 让 read指针 去找到下一个 ...

  9. 20170623_oracle基础知识_常见问题

    1 如何配置网络服务?两种连接 Oracle 工具? 1) 打开Net Manager 2) 选择服务命名,点击“+ ”号 3 ) 网络服务名:  remote协议:tcp/ip 主机名:ip地址 端 ...

  10. C# winform通过按钮上移下移 解决了datasource绑定问题

    事件代码: private void btn_frmDicType_MoveUp_Click(object sender, EventArgs e) { int lstLength = this.ls ...