Skip to content
This repository was archived by the owner on Dec 25, 2017. It is now read-only.

Commit 39ba1ab

Browse files
committed
🐛 bug(validation): fix unregsiter error [ci skip]
Closes #336 Closes #338 Closes #347
1 parent 853b7b3 commit 39ba1ab

File tree

3 files changed

+20
-8
lines changed

3 files changed

+20
-8
lines changed

src/components/validity-result-group.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ export default function (Vue: GlobalAPI): Object {
8787
this.resetResults(name)
8888
})
8989
},
90+
validityCount (): Number {
91+
return this._validityKeys.length
92+
},
9093
isRegistered (name: string): boolean {
9194
return name in this._validities
9295
},

src/components/validity/lifecycles.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export default function (Vue: GlobalAPI): Object {
7474
if (validation) {
7575
const { instance, name } = validation
7676
const group = this.group
77-
instance.unregister(this.field, this, { named: name, group })
77+
instance.unregister(this.field, { named: name, group })
7878
}
7979

8080
if (this._unwatchResultProp) {

src/validation.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,29 @@ export default function (Vue: any): any {
8383
const namedValidity: ?ValidityGroupComponent = named ? this._getValidityGroup('named', named) : null
8484
if (named && group && namedValidity && groupValidity) {
8585
groupValidity.unregister(field)
86-
namedValidity.isRegistered(group) && namedValidity.unregister(group)
87-
this._validityManager.isRegistered(named) && this._validityManager.unregister(named)
86+
if (groupValidity.validityCount() === 0) {
87+
namedValidity.isRegistered(group) && namedValidity.unregister(group)
88+
this._unregisterValidityGroup('group', group)
89+
}
90+
if (namedValidity.validityCount() === 0) {
91+
this._validityManager.isRegistered(named) && this._validityManager.unregister(named)
92+
this._unregisterValidityGroup('named', named)
93+
}
8894
} else if (namedValidity) {
8995
namedValidity.unregister(field)
90-
this._validityManager.isRegistered(named) && this._validityManager.unregister(named)
96+
if (namedValidity.validityCount() === 0) {
97+
this._validityManager.isRegistered(named) && this._validityManager.unregister(named)
98+
this._unregisterValidityGroup('named', named)
99+
}
91100
} else if (groupValidity) {
92101
groupValidity.unregister(field)
93-
this._validityManager.isRegistered(group) && this._validityManager.unregister(group)
102+
if (groupValidity.validityCount() === 0) {
103+
this._validityManager.isRegistered(group) && this._validityManager.unregister(group)
104+
this._unregisterValidityGroup('group', group)
105+
}
94106
} else {
95107
this._validityManager.unregister(field)
96108
}
97-
98-
group && this._unregisterValidityGroup('group', group)
99-
named && this._unregisterValidityGroup('named', named)
100109
}
101110

102111
destroy (): void {

0 commit comments

Comments
 (0)