一、vue2.0移除了$index和$key
<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的環境下雖然可以運行<template>
<div class="hello">
<ul>
<li v-for="(index,item) in list">{{index}}--{{item}}</li>
</ul>
</div>
</template>
得到的頁面效果如下二、$refs和$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環境下是獲取不了的我們再來使用$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>
這種方法是可以獲取到的<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的元素關於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>
這種寫法就有效果了,這是根據官方文檔寫的,實現之後效果是這樣的