diff --git a/packages/pagination/src/pagination.js b/packages/pagination/src/pagination.js index cfcdf98ca7..3650001aad 100644 --- a/packages/pagination/src/pagination.js +++ b/packages/pagination/src/pagination.js @@ -375,27 +375,30 @@ export default { pageSize: { immediate: true, handler(val) { - this.internalPageSize = val; + this.internalPageSize = isNaN(val) ? 10 : val; } }, - internalCurrentPage(newVal, oldVal) { - newVal = parseInt(newVal, 10); - - /* istanbul ignore if */ - if (isNaN(newVal)) { - newVal = oldVal || 1; - } else { - newVal = this.getValidCurrentPage(newVal); - } + internalCurrentPage: { + immediate: true, + handler(newVal, oldVal) { + newVal = parseInt(newVal, 10); + + /* istanbul ignore if */ + if (isNaN(newVal)) { + newVal = oldVal || 1; + } else { + newVal = this.getValidCurrentPage(newVal); + } - if (newVal !== undefined) { - this.internalCurrentPage = newVal; - if (oldVal !== newVal) { + if (newVal !== undefined) { + this.internalCurrentPage = newVal; + if (oldVal !== newVal) { + this.$emit('update:currentPage', newVal); + } + } else { this.$emit('update:currentPage', newVal); } - } else { - this.$emit('update:currentPage', newVal); } }, diff --git a/test/unit/specs/pagination.spec.js b/test/unit/specs/pagination.spec.js index d9274f1cf2..f13fef8b3e 100644 --- a/test/unit/specs/pagination.spec.js +++ b/test/unit/specs/pagination.spec.js @@ -82,6 +82,16 @@ describe('Pagination', () => { expect(vm.$el.querySelectorAll('li.number')).to.length(4); }); + it('pageSize: NaN', () => { + vm = createTest(Pagination, { + pageSize: NaN, + total: 100 + }); + + const pagers = vm.$el.querySelectorAll('li.number'); + expect(pagers).to.length(7); + }); + it('pageCount', () => { const vm = createTest(Pagination, { pageSize: 25, @@ -119,6 +129,17 @@ describe('Pagination', () => { expect(vm.$el.querySelector('li.number.active')).to.have.property('textContent').to.equal('3'); }); + it('currentPage: NaN', () => { + vm = createTest(Pagination, { + pageSize: 20, + total: 200, + currentPage: NaN + }); + + expect(vm.$el.querySelector('li.number.active')).to.have.property('textContent').to.equal('1'); + expect(vm.$el.querySelectorAll('li.number')).to.length(7); + }); + it('set currentPage & total', (done) => { vm = createVue({ template: `