vue2.0移除或更改的一些东西(移除index key)


Posted in Javascript onAugust 28, 2017

一、vue2.0移除了$index和$key

虽然说现在很多文章说他们的代码是vue2.0版本的,但是有一些仔细一看,发现并不全是2.0版本,有些语法还是1.0的版本,比如这个$index,$key,这两个压根就不是2.0的写法,2.0早就把这两个给删除了,我们先来看看之前的列表渲染是怎么写的

<template>
 <div class="hello">
 <ul>
  <li v-for="item in list">{{$index}}--{{$key}}</li>
 </ul>
 </div>
</template>
<script>
export default {
 data(){
 return{
  list:['姓名','性别','年龄','语文','数学','英语','总分']
 }
 }
}
</script>

这种写法在2.0的环境下虽然可以运行

vue2.0移除或更改的一些东西(移除index key)

但是在控制台却出错了

vue2.0移除或更改的一些东西(移除index key)

$index和$key没有定义,而且在页面上也没有渲染出这两个东西的效果,$index是索引,$key是键值

vue2.0移除或更改的一些东西(移除index key)

在vue2.0中,这种写法改为了

<template>
 <div class="hello">
 <ul>
  <li v-for="(index,item) in list">{{index}}--{{item}}</li>
 </ul>
 </div>
</template>

得到的页面效果如下

vue2.0移除或更改的一些东西(移除index key)

当然,这个问题有很多人写博客提到过,我这里就汇总一下

二、$refs和$els

我在vue2.8.2的版本下使用$refs和$els获取元素的时候,出现了一些问题,当然可能不止是2.8.2版本,其他的版本我还没试过,如果有跟我相同的问题的话可以试试看这种方法。我们先来使用$els

<template>
 <div class="hello">
 <div class="v-t" v-el:v-t>
  <button @click="getElement">测试</button>
 </div>
 </div>
</template>
<script>
export default {
 methods:{
 getElement(){
  let element=this.$els.vT
  console.log(element)
 }
 }
}
</script>

v-el用横杠写法,在用$els的时候用驼峰写法,我在2.8.2版本的vue环境下是获取不了的

vue2.0移除或更改的一些东西(移除index key)

我们再来使用$refs获取元素节点,我们先用这种方法试试看

<template>
 <div class="hello">
 <div class="v-t" ref="vt">
  <button @click="getElement">测试</button>
 </div>
 </div>
</template>
<script>
export default {
 methods:{
 getElement(){
  let element=this.$refs.vt
  console.log(element)
 }
 }
}
</script>

这种方法是可以获取到的

vue2.0移除或更改的一些东西(移除index key)

接下来我们试试看这种写法

<template>
 <div class="hello">
 <div class="v-t" ref="v-t">
  <button @click="getElement">测试</button>
 </div>
 </div>
</template>
<script>
export default {
 methods:{
 getElement(){
  let element=this.$refs['v-t']
  console.log(element)
 }
 }
}
</script>

也是可以获取得到class为v-t的元素

vue2.0移除或更改的一些东西(移除index key)

关于ref注册时间的重要说明: 因为ref本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!$refs 也不是响应式的,因此你不应该试图用它在模版中做数据绑定。----引用自vue.js官方文档

三、transition

Vue 提供了 transition 的封装组件,比如我们现在要实现一种效果:点击一个按钮之后,缓慢出现一个有背景颜色的div,点击div里面的关闭按钮之后,div缓慢消失。有一种写法是这样的

<template>
 <div class="hello">
 <button @click="show">开启</button>
 <div class="box" v-show="this.tf" transition="fade">
  <button @click="hide">关闭</button>
 </div>
 </div>
</template>
<script>
export default {
 data(){
 return{
  tf:false
 } 
 },
 methods:{
 show(){
  this.tf=true
 },
 hide(){
  this.tf=false
 }
 }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style>
.box{
 width:177px;
 height:177px;
 transition:all 0.5s
}
.fade-transition{
 opacity:1;
 background:rgba(7,17,27,0.8);
}
.fade-enter,.fade-leave{
 opacity:0;
 background:rgba(7,17,27,0);
}
</style>

这种写法在有些版本运行是有效果的,但是在2.8.0版本下却没有效果,点击开启按钮之后只出现一个关闭按钮,现在我们更改一下写法

<template>
 <div class="hello">
 <button @click="show">开启</button>
 <transition>
  <div class="box" v-show="this.tf">
  <button @click="hide">关闭</button>
  </div>
 </transition>
 </div>
</template>
<script>
export default {
 data(){
 return{
  tf:false
 } 
 },
 methods:{
 show(){
  this.tf=true
 },
 hide(){
  this.tf=false
 }
 }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style>
.box{
 width:177px;
 height:177px;
 background:rgba(7,17,27,0.8);
}
.v-enter-active,.v-leave-active{
 transition: opacity 0.5s
} 
.v-enter,.v-leave-to{
 opacity: 0
}
</style>

这种写法就有效果了,这是根据官方文档写的,实现之后效果是这样的

vue2.0移除或更改的一些东西(移除index key)

四、结语

这是我最近学习遇到的一些小问题,有时候看视频,别人写的代码照着敲,我们敲完之后可能都还运行不了,这时候有可能是版本问题,框架更新了,语法不一样了等等。现在一些框架更新太快了,对我们这些码农来说确实挺考验的。

Javascript 相关文章推荐
JavaScript入门教程(7) History历史对象
Jan 31 Javascript
让IE8支持DOM 2(不用框架!)
Dec 31 Javascript
JavaScript获取文本框内选中文本的方法
Feb 20 Javascript
浅谈JavaScript中指针和地址
Jul 26 Javascript
在JavaScript中call()与apply()区别
Jan 22 Javascript
AngularJS实现标签页的两种方式
Sep 05 Javascript
JavaScript数组和对象的复制
Mar 21 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
Nov 22 Javascript
解决vue的 v-for 循环中图片加载路径问题
Sep 03 Javascript
vue实现点击隐藏与显示实例分享
Feb 13 Javascript
javascript json对象小技巧之键名作为变量用法分析
Nov 11 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
Nov 09 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
Aug 28 #Javascript
JS实现图片手风琴效果
Apr 17 #Javascript
vue服务端渲染的实例代码
Aug 28 #Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 #jQuery
使用react-router4.0实现重定向和404功能的方法
Aug 28 #Javascript
vue.js路由跳转详解
Aug 28 #Javascript
jQuery Collapse1.1.0折叠插件简单使用
Aug 28 #jQuery
You might like
php连接Access数据库错误及解决方法
2013/06/20 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
JS Array对象入门分析
2008/10/30 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
简单实现jQuery轮播效果
2017/08/18 jQuery
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
Python实现批量压缩图片
2018/01/25 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
Python PO设计模式的具体使用
2019/08/16 Python
python实现猜数字游戏
2020/03/25 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
logging level级别介绍
2020/02/21 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
土木工程专业本科生求职信
2014/10/01 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
职工食堂管理制度
2015/08/06 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技