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 相关文章推荐
Firefox 无法获取cssRules 的解决办法
Oct 11 Javascript
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
js实现图片上传并正常显示
Dec 19 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
Oct 08 Javascript
JS中Array数组学习总结
Jan 18 Javascript
JavaScript无阻塞加载和defer、async详解
Feb 26 Javascript
vue 怎么创建组件及组件使用方法
Jul 27 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
jquery使用FormData实现异步上传文件
Oct 25 jQuery
Vue学习之常用指令实例详解
Jan 06 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和C#可共用的可逆加密算法详解
2015/10/26 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
php实现的双色球算法示例
2017/06/20 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
Python functools模块学习总结
2015/05/09 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
老龄工作先进事迹
2014/08/15 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
队列队形口号
2015/12/25 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js