本篇為根據Vue教程--元件基礎寫出完整的例子。
-
全域性註冊的元件
全域性註冊的元件在註冊之後可以用在任何新建立的 Vue 根例項 (new Vue) 的模板中。
// 命名可以採用駝峰或者中劃線,但是在使用元件時應使用中劃線形式。
Vue.component('addComponent',{...}
複製程式碼
-
watch API
watch:{
// 在count資料發生改變時可以觀測到資料,進行一些處理
ount: function(newVal, oldVal){
console.log(`變化之前${oldVal},變化之後${newVal}`)
}
複製程式碼
-
props
<div id="app">
<add-component :num="count" @add-one="add">哈哈</add-component>
</div>
複製程式碼
props:{
// 採用了物件的寫法
num:{
type: Number, // 接受Number型別
required: true, // 引數是否必須
default: 1, // 未傳值時生效的預設值
validator: (value)=>{ // 可以對資料進行檢測,要返回true或者false
// value 是傳過來num的值
return value > 700 ? false : true
}
}
},
複製程式碼
-
監聽子元件事件
<div id="app">
// 監聽add-one事件。 此處的哈哈會傳給元件中的slot進行顯示。
<add-component :num="count" @add-one="add">哈哈</add-component>
</div>
複製程式碼
// 使用``號可以換行code。
template:`<div>
<div>prop:{{num}}</div>
<div>元件資料:{{componentNum}}</div>
// 點選後觸發add-one事件,並傳值給該事件所觸發的父元件中的事件。
<button @click="$emit('add-one',parseInt(addend,10))">給父元素加{{addend}}</button>
<input placeholder="要加幾老鐵?"
v-model="addend"/>
<div>插槽接受的內容:<slot></slot></div>
</div>`
複製程式碼