加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

快应用的变乱监听机制和组件间通讯

发布时间:2019-03-02 00:44:46 所属栏目:建站 来源:王波
导读:提及变乱,做前端开拓的伴侣必然不会生疏。变乱,即网页上的一系列举动,可所以赏识器举动,如页面完成了加载,页面封锁;或是用户操纵举动,如用户输入操纵,用户点击按钮等,这些举动会被JavaScript监测到,并执行响应的逻辑代码。可以说,前端的交互行

示譬喻下:

  1. <template>  
  2. <div class="tutorial-page">  
  3. <text onclick="emitElement">触发组件节点的变乱:click</text>  
  4. <text id="elNode1" item-flag="{{ argName + 1 }}" onclick = "onClickHandler">组件节点1</text>  
  5. <text id="elNode2" item-flag="{{ argName + 2 }}" onclick = "onClickHandler2('参数1', argName)">组件节点2</text>  
  6. </div>  
  7. </template> 
  8.  
  9. <style lang="less">  
  10. .tutorial-page {  
  11. flex-direction: column;  
  12. }  
  13. </style> 
  14.  
  15. <script>  
  16. export default {  
  17. data () {  
  18. return {  
  19. argName: '动态参数'  
  20. }  
  21. }, 
  22.  
  23. onClickHandler (evt) {  
  24. // 变乱范例,参数详情  
  25. console.info(`触发变乱:范例:${evt.type}, 详情: ${JSON.stringify(evt.detail)}`);  
  26. if (evt.target) {  
  27. console.info(`触发变乱:节点:${evt.target.id}, ${evt.target.attr.itemFlag}`)  
  28. }  
  29. }, 
  30.  
  31. onClickHandler2 (arg1, arg2, evt) {  
  32. // 变乱范例,变乱参数,target  
  33. console.info(`触发变乱:范例:${evt.type}, 参数: ${arg1}, ${arg2}`);  
  34. }, 
  35.  
  36. emitElement () {  
  37. // 留意:通过此类方法的变乱不会携带target属性,开拓者可以通过detail参数实现  
  38. this.$emitElement('click', { params: '参数内容' }, 'elNode1')  
  39. }  
  40. }  
  41. </script> 

表明一下

Click变乱可通过用户点击操纵触发,也可通过$emitElement触发。

自界说组件

上文曾提到原生组件,凡是原生组件是我们体系中最基本的组件,然而我们在做一个轻微伟大的页面时,假如每个页面都只用原生组件搭建,那这样的代码的可维护性会差许多。打个例如,就比如一小我私人口浩瀚的国度,没有省、市、县这些单元,而是只以小我私人为单元,不可思议这个国度的打点将有多灾。原理相同,自界说组件,我们可以按照详细的营业逻辑,把页面凭证成果拆成多个模块,每个模块认真个中的一个成果部门,最后页面将由这些模块组合搭建起来,让代码布局越发清楚,易于维护。

自界说组件是开拓者编写的组件,行使起来和Native原生组件一样,最终凭证组件的<template>来渲染;同时开提倡来又和页面一样,拥有ViewModel实现对数据、变乱、要领的打点,这么来看,页面也是一种非凡的自界说组件,无需引入即可行使,同时处事于整个页面。

编写自界说组件

示譬喻下:

  1. <template>  
  2. <div class="tutorial-page">  
  3. <text class="tutorial-title">自界说组件:</text>  
  4. <text>{{ prop1 }}</text>  
  5. <text>{{ prop2Object.name }}</text>  
  6. </div> 
  7.  
  8. </template>  
  9. <style lang="less">  
  10. .tutorial-page {  
  11. flex-direction: column;  
  12. padding-top: 20px;  
  13. .tutorial-title {  
  14. font-weight: bold;  
  15. }  
  16. }  
  17. </style> 
  18.  
  19. <script>  
  20. // 子组件  
  21. export default {  
  22. props: [  
  23. 'prop1',  
  24. 'prop2Object'  
  25. ], 
  26.  
  27. data: {  
  28. }, 
  29.  
  30. onInit () {  
  31. console.info(`外部转达的数据:`, this.prop1, this.prop2Object)  
  32. }  
  33.  
  34. </script> 

两点留意

一是自界说组件比页面组件的差异之处在于多了一个props属性,用于声明该组件可接管的外部数据转达;props是一个数组,数组中每个元素是袒露的属性。

二是假如属性名称行使驼峰界说,如:prop2Object,那么在外部转达数据时请行使-毗连,如:prop2-object

引入自界说组件

引入自界说组件的方法和我们平常常用的方法差异,我们平常凡是会用require或import的方法引入组件,而在快应用框架中,必要行使<import>标签来引入。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读