рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЛ рдбреЗрдиреА
рд╣реЗрдбреНрд░рд┐рдХ рдХреЗ рд▓реЗрдЦ "
рдкреЗрдЬреЗрд╢рди рдЗрди рд╡реАрдпреВ.рдЬреЗрдПрд╕ " рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред
рдкреЗрдЬрд┐рдиреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЫреЛрдЯреЗ рдмреНрд▓реЙрдХреЛрдВ рдпрд╛ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ UX рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рддреЛ Vue.js рдШрдЯрдХ рдХреЛ рдкреГрд╖реНрдард╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЯреБрдХрдбрд╝рд╛ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдФрд░ рдлрд┐рд░ рдореИрдВ
рдЯреЗрдореНрдкрд▓реЗрдЯ рджрд┐рдЦрд╛рдКрдВрдЧрд╛
рд╕рднреА рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рдореЗрдВ рд╕реЗ, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ - рдкреГрд╖реНрда рд╕рдВрдЦреНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
data(){ return { pageNumber: 0
рдкреНрд░реЙрдкреНрд╕ (рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ) рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП
рдЖрдХрд╛рд░ рддрд░реНрдХ рднреА рд▓реВрдВрдЧрд╛ред
props:{ listData:{ type:Array, required:true }, size:{ type:Number, required:false, default: 10 } }
рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдореИрдВ
рдкрд┐рдЫрд▓реЗ (рдкрд┐рдЫрд▓реЗ) рдФрд░
рдЕрдЧрд▓реЗ (рдЕрдЧрд▓реЗ) рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:
methods:{ nextPage(){ this.pageNumber++; }, prevPage(){ this.pageNumber--; } }
рдПрдХ рддреНрд╡рд░рд┐рдд рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рддрдиреЗ рдкреГрд╖реНрда рд╣реИрдВ:
pageCount(){ let l = this.listData.length, s = this.size;
рдЕрдм, рдЧрдгрдирд╛ рдХреА рдЧрдИ
рдкрдЧрдбрдВрдЯрд┐рдбреЗрдЯрд╛ рд╕рдВрдкрддреНрддрд┐ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рдВрдпреБрдХреНрдд рд╣реИред рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
paginatedData(){ const start = this.pageNumber * this.size, end = start + this.size; return this.listData.slice(start, end); }
рд╕рдВрдкрд╛рджрдХреАрдп : рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднрдпрд╛рдирдХ рдФрд░ рдмреЛрдЭрд┐рд▓ рдХрд┐рдпрд╛ рдерд╛ред
.Slice рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж,
рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдХрд╛рд░реЗрд▓рд╕ ред
рдФрд░ рд╣рдорд╛рд░рд╛
рдЯреЗрдореНрдкрд▓реЗрдЯ <div> <ul> <li v-for="p in paginatedData"> {{p.first}} {{p.last}} {{p.suffix}} </li> </ul> <button @click="prevPage"> Previous </button> <button @click="nextPage"> Next </button> </div>
рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдмрдЯрди рддрдм рдХрд╛рдо рдХрд░реЗрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдХрд░рдирд╛ рд╣реЛред
рдкреНрд░рдмрд▓ рдмрдЯрди рдХреЗ рд▓рд┐рдП
, рдореИрдВ
рдЬреЛрдбрд╝реВрдВрдЧрд╛ :
: рдЕрдХреНрд╖рдо = "рдкреЗрдЬрдирдВрдмрд░ == 0"
рдФрд░
рдЕрдЧрд▓реЗ рдкреЗрдЬ рдмрдЯрди рдХреЗ рд▓рд┐рдП
рдореИрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ :
: рдЕрдХреНрд╖рдо = "рдкреЗрдЬрдирдВрдмрд░> = рдкреЗрдЬрдХрд╛рдЙрдВрдЯ -1"
рдореЗрд░реЗ рдШрдЯрдХ рдХрд╛ рдХрд╛рд░реНрдпрд╢реАрд▓ рдбреЗрдореЛ:
рдХрднреА-рдХрднреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреГрд╖реНрдард╛рдВрдХрди рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрд┐рдирд╛ рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдбреЗрдиреА рд╣реЗрдбреНрд░рд┐рдХ рдПрдХ рдпреВрдПрд╕рдПрдлрд╝ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рд╣реИ рдЬреЛ рдЕрдкрдиреА рдиреМрдХрд░реА рд╕реЗ рдмрд╣реБрдд рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдФрд░ Vue.js рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдХрднреА-рдХрднреА рдмреНрд▓реЙрдЧ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЯреНрд╡рд┐рдЯрд░ рдкрд░ @dennythecoder рдкрд░ рдЙрд╕рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред