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

Commit 33c71d1

Browse files
committed
🐛 bug(cleanup): fix cannot get validation result
NOTE: ⚠️ not fixes validation result outside available yet ref #236
1 parent 1fbfc53 commit 33c71d1

File tree

3 files changed

+79
-6
lines changed

3 files changed

+79
-6
lines changed

src/validator.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,16 @@ export default class Validator {
5050

5151
disableReactive () {
5252
let vm = this._dir.vm
53-
vm.$setValidationErrors = undefined
54-
vm.$validate = undefined
55-
vm.$validatorReset = undefined
53+
vm.$setValidationErrors = null
54+
delete vm['$setValidationErrors']
55+
vm.$validate = null
56+
delete vm['$validate']
57+
vm.$validatorReset = null
58+
delete vm['$validatorReset']
5659
vm._validatorMaps[this.name] = null
60+
delete vm._validatorMaps[this.name]
5761
vm[this.name] = null
62+
delete vm[this.name]
5863
}
5964

6065
registerEvents () {

test/specs/directives/validator.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ describe('validator element directive', () => {
260260
})
261261

262262
it('validator scope should not be assigned', () => {
263-
assert(vm.$validator1 === null)
263+
assert(vm.$validator1 === undefined)
264264
})
265265
})
266266
})
@@ -363,8 +363,8 @@ describe('validator element directive', () => {
363363
})
364364

365365
it('should not be assigned', () => {
366-
assert(vm.$validator0 === null)
367-
assert(vm.$validator1 === null)
366+
assert(vm.$validator0 === undefined)
367+
assert(vm.$validator1 === undefined)
368368
})
369369
})
370370
})

test/specs/issues.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,4 +384,72 @@ describe('github issues', () => {
384384
})
385385
})
386386
})
387+
388+
describe('#236', () => {
389+
beforeEach((done) => {
390+
el.innerHTML = `
391+
<div v-if='show'>
392+
<validator name="validator1">
393+
<form novalidate>
394+
<input type="text" v-model="name" v-validate:name="['required']">
395+
<span v-if="!$validator1.valid">Name is required</span>
396+
<pre>{{$validator1 | json}}</pre>
397+
</form>
398+
</validator>
399+
</div>
400+
<button @click="toogle">Toogle</button>{{ show }}
401+
<pre>{{$validator1 | json}}</pre>
402+
`
403+
vm = new Vue({
404+
el: el,
405+
data: {
406+
name: 'test',
407+
show: true
408+
},
409+
methods: {
410+
toogle () {
411+
if (this.$data.show) {
412+
this.$data.show = false
413+
} else {
414+
this.show = true
415+
}
416+
}
417+
}
418+
})
419+
vm.$nextTick(done)
420+
})
421+
422+
it('should be validated', (done) => {
423+
assert(vm.validator1 !== null)
424+
425+
let button = el.getElementsByTagName('button')[0]
426+
let input = el.getElementsByTagName('input')[0]
427+
input.value = ''
428+
trigger(input, 'input')
429+
trigger(input, 'blur')
430+
trigger(button, 'click')
431+
vm.$nextTick(() => {
432+
assert(vm['$validator1'] === undefined)
433+
assert(vm._validatorMaps['$validator1'] === undefined)
434+
435+
trigger(button, 'click')
436+
vm.$nextTick(() => {
437+
assert(vm.$validator1 !== null)
438+
assert(vm.$validator1.name.invalid === true)
439+
assert(vm.$validator1.name.required)
440+
441+
input = el.getElementsByTagName('input')[0]
442+
input.value = 'test'
443+
trigger(input, 'input')
444+
trigger(input, 'blur')
445+
vm.$nextTick(() => {
446+
assert(vm.$validator1.name.invalid === false)
447+
assert(vm.$validator1.name.required === false)
448+
449+
done()
450+
})
451+
})
452+
})
453+
})
454+
})
387455
})

0 commit comments

Comments
 (0)