| ¶Ô±ÈÐÂÎļþ | 
 |  |  | 
 |  |  | /** | 
 |  |  |  * éå½ä½¿ç¨ call æ¹å¼thisæå | 
 |  |  |  * @param componentName // éè¦æ¾çç»ä»¶çåç§° | 
 |  |  |  * @param eventName // äºä»¶åç§° | 
 |  |  |  * @param params // éè¦ä¼ éçåæ° | 
 |  |  |  */ | 
 |  |  | function broadcast(componentName, eventName, params) { | 
 |  |  |     // å¾ªç¯åèç¹æ¾å°åç§°ä¸æ ·çåèç¹ å¦å éå½ å½ååèç¹ | 
 |  |  |     this.$children.map((child) => { | 
 |  |  |         if (componentName === child.$options.name) { | 
 |  |  |             child.$emit.apply(child, [eventName].concat(params)) | 
 |  |  |         } else { | 
 |  |  |             broadcast.apply(child, [componentName, eventName].concat(params)) | 
 |  |  |         } | 
 |  |  |     }) | 
 |  |  | } | 
 |  |  | export default { | 
 |  |  |     methods: { | 
 |  |  |         /** | 
 |  |  |          * æ´¾å (å䏿¥æ¾) (ä¸ä¸ª) | 
 |  |  |          * @param componentName // éè¦æ¾çç»ä»¶çåç§° | 
 |  |  |          * @param eventName // äºä»¶åç§° | 
 |  |  |          * @param params // éè¦ä¼ éçåæ° | 
 |  |  |          */ | 
 |  |  |         dispatch(componentName, eventName, params) { | 
 |  |  |             let parent = this.$parent || this.$root// $parent æ¾å°æè¿çç¶èç¹ $root æ ¹èç¹ | 
 |  |  |             let { name } = parent.$options // è·åå½åç»ä»¶å®ä¾çname | 
 |  |  |             // å¦æå½åæèç¹ && å½å没åç§° ä¸ å½ååç§°çäºéè¦ä¼ è¿æ¥çåç§°çæ¶å就廿¥æ¾å½åçèç¹ | 
 |  |  |             // å¾ªç¯åºå½ååç§°ç䏿 ·çç»ä»¶å®ä¾ | 
 |  |  |             while (parent && (!name || name !== componentName)) { | 
 |  |  |                 parent = parent.$parent | 
 |  |  |                 if (parent) { | 
 |  |  |                     name = parent.$options.name | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             // æèç¹è¡¨ç¤ºå½åæ¾å°äºname䏿 ·çå®ä¾ | 
 |  |  |             if (parent) { | 
 |  |  |                 parent.$emit.apply(parent, [eventName].concat(params)) | 
 |  |  |             } | 
 |  |  |         }, | 
 |  |  |         /** | 
 |  |  |          * å¹¿æ (å䏿¥æ¾) (广æå¤ä¸ª) | 
 |  |  |          * @param componentName // éè¦æ¾çç»ä»¶çåç§° | 
 |  |  |          * @param eventName // äºä»¶åç§° | 
 |  |  |          * @param params // éè¦ä¼ éçåæ° | 
 |  |  |          */ | 
 |  |  |         broadcast(componentName, eventName, params) { | 
 |  |  |             broadcast.call(this, componentName, eventName, params) | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |