美文网首页
Vue-----this.$nextTick()

Vue-----this.$nextTick()

作者: 李亚_45be | 来源:发表于2019-01-22 17:47 被阅读0次

虽然 Vue.js 鼓励沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做。比如一个新闻滚动的列表项。如果在这里需要操作dom, 应该是等待 Vue 完成更新 DOM之后。

一、新闻滚动列表

1、在created函数中获取后台数据;

2、模板引擎中用v-for生成列表项;

3、调用滚动函数,假设该滚动函数式原声方法写的;

4、什么时候开始调用滚动函数比较合适呢?

二、this.$nextTick()

官方解释:将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。

Vue.component('example', {

  template: '<span>{{ message }}</span>',

  data: function () {

    return {

      message: 'not updated'

    }

  },

  methods: {

    updateMessage: function () {

      this.message = 'updated'

      console.log(this.$el.textContent) // => 'not updated'

      this.$nextTick(function () {

        console.log(this.$el.textContent) // => 'updated'

      })

    }

  }

})

三、新闻滚动列表中的this.$nextTick()放哪里?

  因为数据是根据请求之后获取的,所以应该放到请求的回调函数里面。

四、注意this.nextTick()

this.nextTick(callback),当数据发生变化,更新后执行回调。

this.$nextTick(callback),当dom发生变化,更新后执行的回调。

相关文章

网友评论

      本文标题:Vue-----this.$nextTick()

      本文链接:https://www.haomeiwen.com/subject/zadrjqtx.html