vue全局api --- nextTick

nextTick 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

在项目中遇到做横向滚动,并且通过首页传进来的值找到是通过哪一条进来的,并且将那一条展示在手机屏幕的可视区域,

css代码如下

   .detail-parent {
        width: 100%;
        height: 150px;
        overflow-x: scroll;
    }

通过上一级页面传进来的值去请求接口之后,找到当前定位的那一条之后,改变元素的scrollLeft就可以在将那条数据放到手机的可视区域

js

this.lectureList = res.data.data.lecture_list;
var classContent = this.lectureList.filter((item, index) => {
       eturn item.lecture_id === this.class_id;
});
this.currentIndex = this.lectureList.indexOf(classContent[0]);

要使用this.currentIndex的值,平常都是直接在mounted中直接通过ref获取到想要操作的元素,现在虽然可以在mounted中可以获取到元素,但是并不能获取到她的scrollLeft;
第一种办法可以直接在updated钩子函数中获取元素修改但是有一个问题就是每次数据改变都会执行

updated() {
            this.$nextTick(() => {
                var li = document.querySelector('.select');    //选中的元素
                this.$refs.parent.scrollLeft = li.offsetWidth * this.currentIndex + 15 * this.currentIndex; //选中的元素距离左边的距离*它的下标+每一个元素的margin_left*下标
            });
        },

第二种是在请求完数据之后使用nextTick方法

this.lectureList = res.data.data.lecture_list;
var classContent = this.lectureList.filter((item, index) => {
       eturn item.lecture_id === this.class_id;
});
this.currentIndex = this.lectureList.indexOf(classContent[0]);
this.$nextTick(() => {
    var li = document.querySelector('.select');
    this.$refs.parent.scrollLeft = li.offsetWidth * this.currentIndex + 15 * this.currentIndex;
});

原文地址:https://www.cnblogs.com/douge/p/12091573.html

时间: 2024-07-31 15:39:51

vue全局api --- nextTick的相关文章

Vue全局API总结

带图原文链接地址:http://www.cnblogs.com/douyae...1.extend用于创建一个子类Vue,用$mount来挂载 <body> <div id="app"></div> <script> const app=Vue.extend({ template:'<p>{{a}} {{b}} {{c}}</p>', data:function(){ return { a:'Welcome', b

vue全局API

.array p { counter-increment: longen; margin-left: 10px } .array p::before { content: counter(longen) "." } .alink { font-size: 16px; color: blue } 阅读目录 1.Vue.extend({}) 2.Vue.nextTick([callback, context]) 3.Vue.set(object, key, value) 4.Vue.del

Vue基础(环境配置、内部指令、全局API、选项、内置组件)

1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装完成后在命令行执行以下命令查看npm包管理器版本 npm -v npm中文文档:https://www.npmjs.cn/ 配置淘宝镜像 npm install cnpm -g --registry=https://registry.npm.taobao.org 然后执行 cnpm -v 查看版本信

Vue.js(25)之 vue全局配置api介绍

本文介绍的全局api并不在Vue的构造函数内,而是在Vue构造器外面提供这些方法,让我们扩展新功能. 1. vue.extend(options) 参考:https://www.w3cplus.com/vue/vue-extend.html   1 vue在创建vue实例会经过以下四个过程: 使用vue.extend创建实例也是相似的: <!DOCTYPE html> <html lang="en"> <head> <meta charset=

vue 2.0 —— 全局API

一.什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能. #二.Vue.directive自定义指令 我们在第一季就学习了内部指令,我们也可以定义一些属于自己的指令,比如我们要定义一个v-jspang的指令,作用就是让文字变成绿色. 在自定义指令前我们写一个小功能,在页面上有一个数字为10,数字的下

vuejs全局api概念

什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能.

vue2.0学习(二)-全局API

vue2.0学习(二)-全局API GitHub源码 https://github.com/sunnyguyan/VueDemo 1.Vue.directive自定义指令 一.什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能 二.Vue.directive自定义指令 我们在第一季就学习了内部指令,

vue全局配置----小白基础篇

今天学习vue全局配置.希望帮助我们去了解vue的全局配置,快速开发. Vue.config是vue的全局配置对象.包含Vue的所有全局属性: silent:boolean(默认值:false)----取消Vue的所有的日志与警告 :用法:Vue.config.silent = true optionMergeStrategies:{[key:string]:Function}(默认是空对象{}) vue.config.optionMergeStrategies._my_option = fun

自定义vue全局组件use使用、vuex的使用

自定义vue全局组件use使用(解释vue.use()的原理)我们在前面学习到是用别人的组件:Vue.use(VueRouter).Vue.use(Mint)等等.其实使用的这些都是全剧组件,这里我们就来讲解一下怎么样定义一个全局组件,并解释vue.use()的原理而我们再用Axios做交互,则不能使用Vue.use(Axios),因为Axios没有install 自定义一个全局Loading组件,并使用:总结目录: |-components |-loading |-index.js 导出组件,