除了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) } }
愿你成为终身学习者