第七十八篇:写一个按需展示的文本框和按钮(使用ref)
好家伙,
我们又又又来了一个客户
用户说:
我想我的页面上有一个搜索框,
当我不需要他的时候,它就是一个按钮
当我想要搜索的时候,我就点一下它,
然后按钮消失,搜索框出现,
当我在浏览其他东西时,这个搜索框会自己变回一个按钮
1.按需展示的文本框和按钮
来做一个按需展示的按钮和文本框
上代码:
<template>
<div id="app">
<input type="text" v-if="inputvalue" @blur="showButton">
//@blur 当失去焦点的时候触发showButton事件
//失去焦点:你点了文本框以外的区域时,焦点不再在文本框上
<button v-else @click="showInput">展示输入框</button>
</div>
</template> <script>
import HelloWorld from './components/HelloWorld.vue' export default {
name: 'App',
data(){
return{
inputvalue:false
}
},
components: {
HelloWorld
},
methods:{
showInput(){
this.inputvalue=true;
},
showButton(){
this.inputvalue=false;
}
}
}
</script>
效果如下:
用户看了直摇头
2.优化
现在用户说:
为什么我点了按钮,
输入框出现了,
我还要再次点一下输入框,才能开始输入?
于是我们又来解决需求了
来稍作修改:
来为文本框绑定一个ref属性:
<input type="text" v-if="inputvalue" @blur="showButton" ref="inputRef">
添加一个focus方法:
methods:{
showInput(){
//1.调用方法改inputvalue的值
this.inputvalue=true;
//2.让展示出来的文本框,自动获得焦点
this.$refs.inputRef.focus()
},
showButton(){
this.inputvalue=false;
}
于是,不出意外地话,总是要出点意外的,
来看看生命周期的这张图:
发现问题了
showInput(){
//1.调用方法改inputvalue的值
this.inputvalue=true;
//2.让展示出来的文本框,自动获得焦点
this.$refs.inputRef.focus()
},
js是线性执行的,
数据被更改后,就直接操作页面的dom元素了,
但此时的页面并未渲染完毕
于是就报错了
那么,我们寻找另一个解决方法:
3.$nextTick(cb)方法
延迟到dom渲染完毕再调用其中的cd方法:
组件的$nextTick(cb)方法,会把cb回调推迟到下一个DOM更新周期之后执行。
通俗的理解是:等组件的DOM更新完成之后,再执行cb回调函数。
从而能保证cb回调函数可以操作到最新的DOM元素。
showInput(){
//1.调用方法改inputvalue的值
this.inputvalue=true;
//2.让展示出来的文本框,自动获得焦点
this.$nextTick(()=>{
this.$refs.inputRef.focus()
}) },
解决问题了,
客户看了直点头
That's all
第七十八篇:写一个按需展示的文本框和按钮(使用ref)的更多相关文章
- 第二十八篇 -- 写一个简陋的WIFI服务器界面
效果图: Dlg.cpp // WIFIWMITestDlg.cpp : implementation file // #include "stdafx.h" #include & ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Egret入门学习日记 --- 第十八篇(书中 8.5~8.7 节 内容)
第十八篇(书中 8.5~8.7 节 内容) 其实语法篇,我感觉没必要写录入到日记里. 我也犹豫了好久,到底要不要录入. 这样,我先读一遍语法篇的所有内容,我觉得值得留下的,我就录入日记里. 不然像昨天 ...
- 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档
孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...
- 孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6
孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 不过由于对python-docx模 ...
- (七十八)使用第三方框架INTULocationManager实现定位
前面(第七十五.七十六篇)讲述了如何通过CoreLocation获取位置,授权.获取等相当复杂,如果借助于第三方框架,可以简单的实现授权与定位. 首先在GitHub中搜索LocationManager ...
- 五、React事件方法(自写一个方法(函数),然后用按钮onClick触发它、自写方法改变this指向3种写法、
上接:https://www.cnblogs.com/chenxi188/p/11782349.html 项目目录: my-app/ README.md node_modules/ package.j ...
- GridView实现一个图片加多个文本框
GridView的使用是很简单的,API Demo中有例子,但是要实现复杂的GridView,就需要自定义了. 今天我们要实现如下的效果: 先说它的布局,它是由gridview和grid_item两部 ...
- Unity3D研究院之Jenkins的使用(七十八)
长夜漫漫无心睡眠,来一篇嘿嘿.我相信如果已经用Shell脚本完成IOS和Android打包的朋友一定需要Jenkins 怎么才能让策划打包ipa和apk?怎么才能彻底省去程序的时间,只要在同一局域网内 ...
随机推荐
- 4.怎么理解相互独立事件?真的是没有任何关系的事件吗? 《zobol的考研概率论教程》
1.从条件概率的定义来看独立事件的定义 2.从古典概率的定义来看独立事件的定义 3.P(A|B)和P(A)的关系是什么? 4.由P(AB)=P(A)P(B)推出"独立" 5.从韦恩 ...
- WPF中Popup控件的使用
一.Popup控件的主要属性 Popup表示具有内容的弹出窗口,其主要属性为: Child:获取或设置 Popup控件的内容. IsOpen:获取或设置一个值,该值指示Popup 是否可见 Place ...
- 密码学系列之:PKI的证书格式表示X.509
目录 简介 一个证书的例子 X.509证书的后缀 .pem .cer, .crt, .der .p7b, .p7c .p12 .pfx 证书的层级结构和交叉认证 x.509证书的使用范围 总结 简介 ...
- java程序使用ssl证书连接mysql
1. 在mysql服务器上生成证书 openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3600 -key ...
- NC24724 [USACO 2010 Feb S]Chocolate Eating
NC24724 [USACO 2010 Feb S]Chocolate Eating 题目 题目描述 Bessie has received \(N (1 <= N <= 50,000)\ ...
- ARCGIS API for Python进行城市区域提取
ArcGIS API for Python主要用于Web端的扩展和开发,提供简单易用.功能强大的Python库,以及大数据分析能力,可轻松实现实时数据.栅格数据.空间数据等多源数据的接入和GIS分析 ...
- 面试突击68:为什么 TCP 需要 3 次握手?
TCP 三次握手是一道经典的面试题,它是指 TCP 在传递数据之前,需要进行 3 次交互才能正式建立起连接,并进行数据传递. TCP 之所以需要 3 次握手是因为 TCP 双方都是全双工的.所谓全双工 ...
- nginx+redis+tomcat session绑定
需求: 公司后端两台tomcat做负载,前端nginx接收用户请求:为了使无论用户请求到后端哪台设备其session都能保持一致,需要做session绑定:所需软件: tomcat8.redis.ng ...
- Modbus转BACnet IP网关
BACnet是楼宇自动化和控制网络数据通信协议的缩写.它是为楼宇自动化网络开发的数据通信协议 根据1999年底互联网上楼宇自动化网络的信息,全球已有数百家国际知名制造商支持BACnet,包括楼宇自 ...
- linux rz上传失败
最近rz上传文件时出现了一次文件上传失败的情况,故搜集了以下资料加强学习 rz -ary --o-sync -a 表示使用ascii码格式传输文件,如果是Dos格式的文件,会转换为unix格式 -r ...