除了Vue自己的生命週期處,mpvue還兼容了小程序的生命週期,這部分生命週期的鉤子來源於微信小程序的Page,除特殊狀況外,不建議使用小程序的生命週期鉤子。html
new Vue({ data: { a: 1 }, created () { // `this` 指向 vm 實例 console.log('a is: ' + this.a) }, onShow () { // `this` 指向 vm 實例 console.log('a is: ' + this.a, '小程序觸發的 onshow') } }) // => "a is: 1"
小程序裏全部的 BOM/DOM 都不能用,也就是說 v-html 指令不能用。vue
咱們會把 template 中的 {{}} 雙花括號的部分,直接編碼到 wxml 文件中,因爲微信小程序的能力限制(數據綁定),因此沒法支持複雜的 JavaScript 表達式。小程序
目前能夠使用的有 + - * % ?: ! == === > < [] .,剩下的還待完善。微信小程序
渲染部分會轉成 wxml ,wxml 不支持過濾器,因此這部分功能不支持。微信
不支持在 template 內使用 methods 中的函數。app
全支持 官方文檔:列表渲染dom
只是須要注意一點,嵌套列表渲染,必須指定不一樣的索引!異步
<!-- 在這種嵌套循環的時候, index 和 itemIndex 這種索引是必須指定,且別名不能相同,正確的寫法以下 --> <template> <ul v-for="(card, index) in list"> <li v-for="(item, itemIndex) in card"> {{item.value}} </li> </ul> </template>
在 input 和 textarea 中 change 事件會被轉爲 blur 事件。ide
列表中沒有的原生事件也能夠使用例如 bindregionchange 事件直接在 dom 上將bind改成@
@regionchange,同時這個事件也很是特殊,它的 event type 有 begin 和 end
兩個,致使咱們沒法在handleProxy 中區分究竟是什麼事件,因此你在監聽此類事件的時候同時監聽事件名和事件類型既函數
<map @regionchange="functionName" @end="functionName" @begin="functionName"><map>
事件修飾符
- .stop 的使用會阻止冒泡,可是同時綁定了一個非冒泡事件,會致使該元素上的 catchEventName 失效!
有且只能使用單文件組件(.vue 組件)的形式進行支持。其餘的諸如:動態組件,自定義 render,和<script type="text/x-template"> 字符串模版等都不支持。緣由很簡單,由於咱們要預編譯出 wxml。
mpvue 能夠支持小程序的原生組件,好比: picker,map 等,須要注意的是原生組件上的事件綁定,須要以 vue 的事件綁定語法來綁定,如 bindchange="eventName" 事件,須要寫成 @change="eventName"
<picker mode="date" :value="date" start="2015-09-01" end="2017-09-01" @change="bindDateChange"> <view class="picker"> 當前選擇: {{date}} </view> </picker>
在全部 頁面 的組件內能夠經過 this.$root.$mp.query 進行獲取。
在全部的組件內能夠經過 this.$root.$mp.appOptions 進行獲取。
因爲 onError 並非完整意義的生命週期,因此只提供一個捕獲錯誤的方法,在 app 的根組件上添加名爲 onError 的回調函數便可。以下:
export default { // 只有 app 纔會有 onLaunch 的生命週期 onLaunch () { // ... }, // 捕獲 app error onError (err) { console.log(err) } }
願你成爲終身學習者