123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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: {
-
- dispatch(componentName, eventName, params) {
- let parent = this.$parent || this.$root
- let { name } = parent.$options
-
-
- while (parent && (!name || name !== componentName)) {
- parent = parent.$parent
- if (parent) {
- name = parent.$options.name
- }
- }
-
- if (parent) {
- parent.$emit.apply(parent, [eventName].concat(params))
- }
- },
-
- broadcast(componentName, eventName, params) {
- broadcast.call(this, componentName, eventName, params)
- }
- }
- }
|