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

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

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

1 在comp-part1标签中,我们看到这样一个属性,onevt-type3="evtTypeHandler",这是指,在该节点上绑定了名为evtType3的要领,被触发后,执行evtTypeHandler的函数,在下文的‘父子之间组件变乱转达’中,会看到怎样触发该要领。

2 代码中的evtType1Emit要领,该要领通过挪用$broadcast要领,触发了名为'evtType1'的变乱,并转达了params参数,'evtType1'变乱也可以在下文‘父子组件之间变乱转达’中看到。

转达数据与数据改革

如上面所述,父组件向子组件转达数据,通过在子组件的props属性中声明对外袒露的属性名称,然后在组件引用标签上声明转达的父组件数据。

假如你必要在子组件中对数据举办改革,但又不想窜改父组件数据时,可以行使$watch()来满意需求。假如是监听工具中的属性,参数请行使.支解,如:$watch(xxx.xxx.xxx, methodName)

示譬喻下:

  1. <script>  
  2.   
  3. // 子组件  
  4.   
  5. export default {  
  6.   
  7. props: [  
  8.   
  9. 'prop1',  
  10.   
  11. 'prop2Object'  
  12.   
  13. ],  
  14.   
  15. data () {  
  16.   
  17. return {  
  18.   
  19. upperProp1: this.prop1  
  20.   
  21. }  
  22.   
  23. },  
  24.   
  25. onInit () {  
  26.   
  27. console.info(`外部转达的数据:`, this.prop1, this.prop2Object)  
  28.   
  29. // 监听数据变革  
  30.   
  31. this.$watch('prop1', 'watchPropsChange')  
  32.   
  33. this.$watch('prop2Object.name', 'watchPropsChange')  
  34.   
  35. },  
  36.   
  37. /**  
  38.   
  39. * 监听数据变革,你可以对数据处理赏罚后,配置值到data上  
  40.   
  41. * @param newV  
  42.   
  43. * @param oldV  
  44.   
  45. */  
  46.   
  47. watchPropsChange (newV, oldV) {  
  48.   
  49. console.info(`监听数据变革:`, newV, oldV)  
  50.   
  51. this.upperProp1 = newV && newV.toUpperCase()  
  52.   
  53. }  
  54.   
  55. }  
  56.   
  57. </script>  

表明一下

上面是子组件的代码,我们看到data中界说了upperProp1,同时也看到watchPropsChange要领中,有两个参数,一个是newV,指变革后的属性值,oldV指原先的属性值,将newV赋值给upperProp1,这样在子组件中对数据upperProp1举办改革,就不会窜改父组件原先的数据。

父子组件之间的变乱转达

当子组件对数据举办改革后,把最终数据交给父组件乃至往上,每每有两种步伐

1、父组件转达的数据自己就是工具,子组件直接修改的就是这个工具中的属性;那么父组件同样也就拿到了最终数据

2、子组件在data中生涯了一份内部数据,必要交给父组件:子组件通过$dispatch()完成变乱触发,父组件通过$on()绑定变乱并相应,如:evtType2;

相同于2,子组件在data中生涯了一份内部数据,必要交给父组件:子组件通过$emit()触发在节点上绑定的变乱来执行父组件的要领,如:evtType3;

示譬喻下:

  1. <script>  
  2.   
  3. // 子组件  
  4.   
  5. export default {  
  6.   
  7. props: [  
  8.   
  9. 'prop1',  
  10.   
  11. 'prop2Object'  
  12.   
  13. ],  
  14.   
  15. data () {  
  16.   
  17. return {  
  18.   
  19. upperProp1: this.prop1  
  20.   
  21. }  
  22.   
  23. },  
  24.   
  25. onInit () {  
  26.   
  27. console.info(`外部转达的数据:`, this.prop1, this.prop2Object)  
  28.   
  29. // 绑定VM的自界说变乱  
  30.   
  31. this.$on('evtType1', this.evtTypeHandler)  
  32.   
  33. // 这里我以为官网的代码示例存在题目,因此注释掉了,此处应该将其移至父组件的onInit要领中。  
  34.   
  35. //this.$on('evtType2', this.evtTypeHandler)  
  36.   
  37. },  
  38.   
  39. evtTypeHandler (evt) {  
  40.   
  41. console.info(`子组件:变乱相应: `, evt.type, evt.detail)  
  42.   
  43. // 竣事情乱转达  
  44.   
  45. // evt.stop()  
  46.   
  47. },  
  48.   
  49. evtType2Emit () {  
  50.   
  51. this.$dispatch('evtType2', { params: '特殊参数' })  
  52.   
  53. },  
  54.   
  55. evtType3Emit () {  
  56.   
  57. this.$emit('evtType3', { params: '特殊参数' })  
  58.   
  59. }  
  60.   
  61. }  
  62.   
  63. </script>  

表明一下

在上文我已做了如下声名

(编辑:湖南网)

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

热点阅读