具体场景:

当vue中使用swiper, better-scroll时候,我们需要去new Swiper,new [better-scroll]来获取实例,通常我们页面的数据都是异步获取的,

会导致我们创建Swiper或者better-scroll实例时,数据还没有更新,DOM也没更新,会造成我们不想要的效果.

所以我们需要在 数据更新之后,DOM也更新了,然后再创建我们的Swiper,better-scroll

解决方案

  1. 使用watch + $nextTick

    watch监听数据的变化,$nextTick下次DOM更新循环之后来调用,当数据修改之后立即调用它,然后等待DOM更新
  2. 使用callback(回调函数)

    一般获取数据都是在vuex中的action中调用ajax异步获取的,所以我们可以在分发action的时候传给action回调函数.

    当action中获取到数据并且提交mutation之后,调用回调函数

    action中
    getGoods({commit}, callback){
    // 异步获取数据
    getGoods().then(result => {
    if(result.code === 0){
    commit('[mutation]', {goods: result.data});
    // 当数据更新之后,通知数据更新了
    // 如果传过来callback就调用,否则不调用
    callback && callback();
    }
    });
    },

    vue实例中

    // 分发action
    this.$store.dispatch('getGoods', () => {
    this.$nextTick(() => {
    // $nextTick回调里面的this自动绑定到调用$nextTick的实例上
    // 要在数据更新之后,列表显示后,创建想要的对象
    // 例如swiper或者better-scroll
    });
    });

最新文章

  1. css3的动画特性
  2. 三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。
  3. IPC-->PIPO
  4. Android编程: 调试方法
  5. 【socket】TCP 和 UDP 在socket编程中的区别
  6. 七周七语言——Prolog(二)
  7. Cocos2d粒子系统二
  8. hdu 5605 geometry(几何,数学)
  9. STL内存管理器的分配策略
  10. ElasticSearch(7)-排序
  11. (译)Windsor入门教程---第五部分 添加日志功能
  12. YYHS-怎样更有力气
  13. python每日学习2018/1/11
  14. Java EE的未来
  15. CKEditor、UBB编辑器的使用总结
  16. oc语言的Foundation框架(学习笔记2)
  17. ubuntu下Qt链接MySQL: QMYSQL driver not loaded(不用重新编译源码)
  18. ASP.NET MVC 4 中的JSON数据交互
  19. C++:同名隐藏和赋值兼容规则
  20. nvm-windows的安装配置

热门文章

  1. 一个简单的rust字符串时钟
  2. [OpenCV实战]45 基于OpenCV实现图像哈希算法
  3. linux下redis_单机版_主从_集群_部署文档
  4. HBase详解(04) - HBase Java API使用
  5. python之路34 MySQL 2 配置文件 字段类型
  6. MQ系列11:如何保证消息可靠性传输(除夕奉上)
  7. C#如何提高代码质量(二)
  8. App测试Android的闪退总结
  9. 一个关于DOM的小小思考
  10. Office 2016 专业版打开Excel空白解决方案