1.Vue中的v-on:click可以簡寫為@click
2.vue元件的定義可以寫為Vue.component(‘item’,{
template:’
’
})
在上面的div中用就可以了
Vue執行個體的生命周期鈎子函數
Vue的生命周期函數就是Vue執行個體在某一個時間點自動執行的函數
得詳細的看那張官網的生命周期圖示
生命周期中首先執行beforecrea()函數 然後是執行created()函數
然後根據圖示 他會問有沒有el挂載點 如果有 會問有沒有template模闆有的話
就會渲染template模闆上的内容 如果沒有的話就把el挂載點上的div渲染出來 是以 el挂載點上的div上可以不寫任何東西 直接寫在el挂載點下面
的 template:'
hello word 就行了模闆渲染前會執行beforeMount函數 hellowolod也就是模闆渲染到頁面後 Mounted函數會被執行
在組建被銷毀 還沒銷毀之前beforeDestroy函數執行 銷毀後 destroyed執行 (可以在控制台用vm.$destroy()銷毀Vue執行個體)
但資料發生改變的時候beforeupdate一瞬間執行 改變之後 updated函數執行
Vue的模闆文法
v-text 和 v-html 後面的值都可以與data中的值做綁定 凡是v-指令 後面都是一個js的表達式 也就是js的運作環境 {{}}中也是可以寫簡單的
js的表達式的
Vue中的計算屬性 偵聽器
計算屬性是寫在computed:{}裡面的函數中的
例如:data:{
first: ‘Lee’,
last:‘del’
},
computed:{
fullName:function(){
return this.first + " " +this.last
}
裡面的fullName可以直接插值
{{fullName}} 中
計算屬性是有一個緩存的機制 如果計算以來的值沒發生改變 他就計算一次 拿上文舉例就是this.first和this.last 如果改變就會重新計算一次 這樣提高性能
用methods:{
fullName:function(){
return this.first + " " +this.last
}
也可以計算 但是沒有緩存機制 是以就計算來說還是用computed比較好 是以computed是跟data裡面的一樣的調用 跟methods寫一樣的書寫方式
如果想讓data中資料發生改變 fullName也同時發生改變 除了上述兩種方法之外 亦可以使用 偵聽器、
watch:{
first:function(){
this.fullName = this.first + " " +this.last
},
last:function(){
this.fullName = this.first + " " +this.last
}
}
使用偵聽器也可以緩存機制 但是watch比較computed複雜 是以用于計算時還是最好用computed
計算屬性的setter 和 getter
computed中的get方法就是在computed:{
fullName:{
get:function(){
return this.first + " " +this.last
}
}實際上跟沒寫差不多
但是
set:function(value){
裡面的value會接收到get中的retrun出來的值 可以進行一些操作 例如
var arr = value.split(’’)
this.first = arr[0]
this.last = arr[1]
這樣一來 computed依賴的資料發生改變 就得重新計算一次
Vue 綁定樣式
1.class的對象綁定 首先 定義一個點選事件 然後 :class={active:isactive}在data中寫 isactive=false 在methods中寫 this.isactive=!isactive
然後在style 中寫active color:red 就可以實作點選變紅 再點選恢複原來的顔色 也可以this.active=this.active===‘active’?"":‘active’
也可以用style來綁定
可以通過數組的方式進行綁定:style= “[styleobj,{fontsize:‘20px’}]”
在data中寫上 styleobj:{ color:black}
再點選事件中寫上 this.styleobj.color = this.styleobj.color===‘black’?‘red’:‘black’
}
}
v-if 和 v-show
v-if是根據變量的false true 删除添加節點
v-show是根據變量的存在于否在css上隐藏顯示
Vue中的key值得作用
如果v-if 有一個input框 v-else有一個input框 當改變變量時從if切換到else Vue有一個複用機制 在if中的input框中填寫的内容也不會
清空 這時候如果在每個input中添加一個key Vue就會知道這個在Vue中是唯一的 就不會複用了
v-for 清單循環 v-for="(item,index) of list" :key=“id” 一般後端傳回資料 會傳回id id就是這條資料唯一标示
如果想在Vue中在數組中添加一項 是不能通過下标的形式來改變的 如果通過下表形式頁面不會響應 隻能通過Vue給的七個處理數組的方法來改變數組
七個方法是 push pop shift UNshift splice sort reverse
在最外層的标簽寫上template 占位符 循環會執行裡面的标簽循環 但是最外層的沒有标簽
對象的循環
v-for="(item,key,index)of duixiang" 對象中加一項也是得用Vue給的方法 直接更改引用但是比較麻煩 這時候可以使用
Vue中的set方法Vue.set(vm.duixiang,‘鍵’,‘值’)
數組中的set方法跟對象差不多
Vue元件使用
Vue元件使用的細節點
is屬性寫在标簽上面 例如 其中row是一個子元件 主要是為了解決很多父标簽下面必須寫子标簽的問題
在子元件中data是一個函數 同時這個函數必須傳回一個對象 主要是子元件需要多次調用 這樣寫可以讓子元件之間的資料不會互相影響
在Vue中如果需要操作dom可以用ref=‘mingchneg’ 可以在Vue執行個體中通過this. r e f s . m i n g c h n e g . i n n e r H T M L 來 進 行 d o m 節 點 的 輸 出 當 在 子 組 件 上 寫 r e f 在 父 組 件 的 實 例 中 寫 t h i s . refs.mingchneg.innerHTML 來進行dom節點的輸出 當在子元件上寫ref 在父元件的執行個體中寫this. refs.mingchneg.innerHTML來進行dom節點的輸出當在子元件上寫ref在父元件的執行個體中寫this.refs.mingcheng擷取到的是這個元件的引用資料
Vue元件父子傳遞資料
Vue中父元件向子元件傳值都是通過屬性的方式 子元件不能修改父元件傳遞過來的資料 如果想要改變資料 要從根源上修改 也可以在子元件的
data中複制父元件傳遞過來的資料 傳遞資料的原理是 先定義一個const conut={寫子元件的東西}, 再在父元件的執行個體中注冊conut 通過components來注冊 在父元件
的标簽中寫上conut标簽 在conut标簽上定義一個屬性進行傳值 在子元件的{props:[]}
校驗父元件傳遞過來的值
接收并使用子元件接收可以限制類型props:{mingcheng:string} 如果不符合會
報錯 如果想要傳數字或字元串可以在後面寫上[number,string] 也可以寫 props:{
countent:{
type:string, 規定傳過來的類型
required:true, 必須要傳這個屬性
default:‘default value’ 如果不傳這個屬性 預設顯示的值
validator:function(value){ 傳入的屬性的值的長度必須大于五
return value.length>5
}
}
}
Vue元件子父傳遞資料
Vue總子元件向父元件傳值 通過事件的方式 在子元件的執行個體中 this.$emit{‘名稱’,‘值’} 在子元件标簽上寫 @名稱=“新名稱” 在根執行個體中寫
新名稱函數
Vue元件監聽子元件上面的原生事件
為什麼要監聽子元件上面的原生事件 因為如果注冊了一個子元件 在子元件上面寫了個@click 在再Vue根執行個體下寫函數并不會被觸發 隻有在
子元件的執行個體模闆總寫函數 并寫自定義事件才可以 但是這樣太麻煩了是以就有了監聽子元件上面的原生事件的需求了
可以在子元件标簽上面寫@click.native=“事件名” 這樣就可以在根執行個體上面擷取到點選事件了
Vue非父子之間傳值
1.可以使用vuex
2.可以使用bus/總線/釋出訂閱模式/觀察者模式
Vue.prototype.bus = new Vue()
this.bus.$emit(‘change’,this.content)
具體項目在寫
Vue插槽
1.插槽的使用場景
如果父元件傳子元件一個标簽 子元件收到後得在外層包裹個div 在這個div上得寫v-html指令 但是傳遞的多的時候太複雜
父元件傳标簽可以直接把标簽插入到子元件标簽中 在子元件的執行個體模闆中寫上solt标簽就可以 solt也可以定義預設内容
但是如果需要傳遞兩個标簽 怎麼差別solt标簽 這個時候就該用到具名插槽了 隻要在子元件标簽中的插槽标簽上面 slot屬性=“名稱”
下面的執行個體模闆中的solt中的标簽上面加上一個name=“名稱” 就可以區分插進來的标簽了
2.作用域插槽
首先父元件調用子元件給子元件一個作用域插槽 這個插槽一定是在子元件标簽下以
{{props.item}}
這裡面的props是子元件的執行個體中的資料 在子元件的執行個體化模闆中寫入 這裡的:item與h1中的item相對應
Vue中的動态元件和 v-once指令
動态元件就是根據子元件中的:is=“type” is中的後面的資料的變化而變化