Pagination: handle NaN on props (#10623)

* Pagination: handle pageSize NaN

* Pagination: handle currentPage NaN
pull/10628/head
Brandon 2018-04-09 18:50:07 +09:00 committed by 杨奕
parent 6f4f57172b
commit 79325390e2
2 changed files with 38 additions and 14 deletions

View File

@ -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);
internalCurrentPage: {
immediate: true,
handler(newVal, oldVal) {
newVal = parseInt(newVal, 10);
/* istanbul ignore if */
if (isNaN(newVal)) {
newVal = oldVal || 1;
} else {
newVal = this.getValidCurrentPage(newVal);
}
/* 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);
}
},

View File

@ -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: `