具体场景:

当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
    });
    });

vue中当数据改变时更新DOM的更多相关文章

  1. vue中的数据监听以及数据交互

    现在我们来看一下vue中的数据监听事件$watch, js代码: new Vue({ el:"#div", data:{ arr:[,,] } }).$watch("ar ...

  2. ajax验证用户名 当用户名框的数据改变时 执行ajax方法

    ajax验证用户名 当用户名框的数据改变时 执行ajax方法 <html xmlns="http://www.w3.org/1999/xhtml" ><head ...

  3. es6中的Proxy和vue中的数据代理的异同

    1:概述 1-1:Proxy 用于修改某些操作的默认行为,Proxy可以说在对对象进行各种访问或者操作的时候在外层进行一层拦截,在操作之前都需要经过这种拦截.proxy返回的是一个新对象,可以通过操作 ...

  4. input中的内容改变时触发的事件

    input中的内容改变时触发的事件 1. onchange事件与onpropertychange事件的区别: onchange事件在内容改变(两次内容有可能相等)且失去焦点时触发:onproperty ...

  5. 当input中的内容改变时触发的事件

    当input中的内容改变时触发的事件 1 $('#id').bind('input propertychange', function() { //处理内容 } 循环js事件 $(document). ...

  6. 解决vue中对象属性改变视图不更新的问题

    在使用VUE的过程中,会遇到这样一种情况, vue data 中的数据更新后,视图没有自动更新. 这个情况一般分为两种, 一种是数组的值改变,在改变数组的值的是时候使用索引值去更改某一项,这样视图不会 ...

  7. 【转】从Vue.js源码看异步更新DOM策略及nextTick

    在使用vue.js的时候,有时候因为一些特定的业务场景,不得不去操作DOM,比如这样: <template> <div> <div ref="test" ...

  8. vue中的数据双向绑定

    学习的过程是漫长的,只有坚持不懈才能到达到自己的目标. 1.vue中数据的双向绑定采用的时候,数据劫持的模式.其实主要是用了Es5中的Object.defineProperty;来劫持每个属性的get ...

  9. Mysql数据库中的计数器表实时更新

    如果某个应用中存在计数器,例如网站的总访问量.用户的粉丝数.文件下载数等等.如果相关应用在Mysql数据库的表中保存计数器,在更新计数器的时候可能会碰到并发问题.例如在web应用中,记录网站的点击次数 ...

  10. 在VS2012后的版本中做数据报表时,提示尚未指定报表“Report1”的报表定义

    有一群的朋友在用VS2012做数据报表时,老是提示 本地报表处理期间出错. 尚未指定报表“Report1”的报表定义 未将对象引用设置到对象的实例. 我看了一下,步骤没错,我用VS2010做了一下,一 ...

随机推荐

  1. win7安装Anaconda+TensorFlow(cpu版)+配置PyCharm

    本着不折腾不舒服斯基,好久没安装软件玩了.今天趁天气不错,安装下TensorFlow(cpu版)(因为没钱上GPU),首先在网上搜了下教程,原文出处: https://blog.csdn.net/u0 ...

  2. 贪心算法Dijkstra

    Dijkstra 最短路径问题 : 给定一个带权有向图 G = (V, E, W),同时给定一个源点 u (u ∈ V),我们要找出从源点 u 出发到其它各点的最短路径距离,并得出这些最短路径的具体路 ...

  3. linux下redis_单机版_主从_集群_部署文档

    一 单机版部署 1.1 Redis下载地址 http://download.redis.io/releases/ 本次部署版本:3.2.8 当前最新版本:5.0.5 1.2 安装 部署路径说明规划 / ...

  4. pytest框架的简介

    概念:是一款基于python语言的单元测试框架 用途:用于发现测试用例.执行测试用例.判断测试结果.生成测试报告的一款框架 测试用例的规则: 测试文件必须与test开头,或_test结尾 类文件必须T ...

  5. P1278 单词游戏【题解】(状压dp)

    单词游戏 题目描述 Io和Ao在玩一个单词游戏. 他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致. 游戏可以从任何一个单词开始. 任何单词禁止说两遍 ...

  6. LIS求解(包括优化)

    首先,让我来看看LIS问题 Description 一个数的序列 bi,当 b1 < b2 < ... < bS 的时候,我们称这个序列是上升的.对于给定的一个序列(a1,a2,.. ...

  7. 虚拟化技术浅析第二弹之初识Kubernetes

    作者:京东物流 杨建民 一.微服务架构起源 单体架构:可以理解为主要业务逻辑模块(我们编写的代码模块,不包括独立的中间件)运行在一个进程中的应用,最典型的是运行在一个Tomcat容器中,位于一个进程里 ...

  8. 加速 Document AI (文档智能) 发展

    在企业的数字工作流中充满了各种文档,包括信件.发票.表格.报告.收据等,我们无法自动提取它们的知识.如今随着文本.视觉和多模态人工智能的进步,我们有可能解锁这些知识,这篇文章向你展示了你的团队该如何使 ...

  9. (19)go-micro微服务filebeat收集日志

    目录 一 Filebeat介绍 二 FileBeat基本组成 三 FileBeat工作原理 四 Filebeat如何记录文件状态: 五 Filebeat如何保证事件至少被输出一次 六 安装Filebe ...

  10. 字节输出流的续写和换行-字节输入流_inputS Stream类

    字节输出流的续写和换行 package demo02.OutputStream; import java.io.FileOutputStream; import java.io.IOException ...