快应用---事件监听与触发
一、快应用
1、快应用是基于手机硬件平台的新型应用形态,标准是由主流手机厂商组成的快应用联盟联合制定;
2、快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台,以平台化的生态模式对个人开发者和企业开发者全品类开放;
3、快应用具备传统APP完整的应用体验,无需安装,即点即用;
二、接下来只是整理了我认为重要的内容(加强记忆),具体内容请看官网;
1)事件监听与触发
A) $on(evtName,fnHandler);
在当前页面注册监听事件,可监听$emit()、$dispatch()、$broadcast()等触发的自定义事件,不能用于注册组件节点的事件响应;
例如:
this.$on('customEvtType',this.customEvtTypeHandler);
customEvtTypeHandler(evt){
console.info(`触发事件:类型${evt.type},参数:${JSON.stringify(evt.detail)}`)
}
B) $off(evtName,fnHandler)
移除事件监听,参数fnHandler为可选,传递仅移除指定的响应函数,不传递则移除此事件的所有监听
C) $emit(evtName,evtDetail)
触发当前实例监听事件函数,与$on()配合使用;注意:$emit()目前只触发$on 所监听的事件;
this.$emit('customEvtType',{params:'参数内容'})
D)监听原生组件事件
原生组件支持一系列事件,如通用事件(如:click,disappear)、组件专有事件(如:focus);
很多开发者希望能够在事件回调函数中,获取到当前触发事件的组件信息并进行进一步操作,
1)在响应函数执行时通过target获取,如:
onClickHandler(evt){
console.info(`触发事件类型:${evt.type},详情:${JSON.stringify(evt.detail)}`);
if(evt.target){
console.info(`触发事件节点:${evt.target.id},${evt.target.attr.disabled}`);
}
}
2)在响应函数绑定时传递参数,如:
onClickHandler2(arg1,arg2,evt){
console.info(`触发事件类型:${evt.type},参数:${arg1},${arg2}`);
}
E)除了用户手动操作触发事件,响应回调之外,开发者开通在代码中通过$emitElement()完成事件的动态触发;
$emitElement(evtName,evtDetail,id)可以触发指定组件id的事件,通过evt.detail获取传递的参数;该方法对自定义组件无效;
例如:
<text onclick="emitElement">触发组件节点中的事件:click</text>
emitElement(){
this.$emitElement('click',{params:'参数内容'},'eNode');
}
F)使用原生组件的冒泡功能
我们在1040+版本对某些通用事件开放冒泡功能;
在未支持冒泡功能之前,开发者仅可以使用target属性指向事件触发的节点;
在已支持冒泡功能之后,开发者可以同时使用target与currentTarget,具体的指向与web规范保持一致;前者指向事件目标节点,后者指向事件触发节点;
为了兼容已经发布的快应用,以上更新,需要开发者在manifest.json中将minPlatformVersion设置为1040或以上,请开发者注意区别,做好向后兼容;