diff --git a/src/components/checkbox/checkbox-group.vue b/src/components/checkbox/checkbox-group.vue index f010d587..1750102d 100644 --- a/src/components/checkbox/checkbox-group.vue +++ b/src/components/checkbox/checkbox-group.vue @@ -49,7 +49,7 @@ }, methods: { updateModel (update) { - this.childrens = findComponentsDownward(this, 'Checkbox'); + this.childrens = findComponentsDownward(this, 'Checkbox', 'CheckboxGroup'); if (this.childrens) { const { value } = this; this.childrens.forEach(child => { diff --git a/src/utils/assist.js b/src/utils/assist.js index 49929cea..c39da765 100644 --- a/src/utils/assist.js +++ b/src/utils/assist.js @@ -212,11 +212,18 @@ export function findComponentDownward (context, componentName) { } // Find components downward -export function findComponentsDownward (context, componentName) { +export function findComponentsDownward (context, componentName, ignoreComponentNames = []) { + if (!Array.isArray(ignoreComponentNames)) { + ignoreComponentNames = [ignoreComponentNames] + } return context.$children.reduce((components, child) => { if (child.$options.name === componentName) components.push(child); - const foundChilds = findComponentsDownward(child, componentName); - return components.concat(foundChilds); + if (ignoreComponentNames.indexOf(child.$options.name) < 0) { + const foundChilds = findComponentsDownward(child, componentName); + return components.concat(foundChilds); + } else { + return components + } }, []); }