рд╢реБрдн рджреЛрдкрд╣рд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВрдиреЗ Backbone.js рдХреЗ рд▓рд┐рдП рдкреЗрдЬрд┐рдиреЗрд╢рди рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╢рд╛рдпрдж рдХреЛрдИ рдХрд╛рдо рдЖрдПрдЧрд╛ред
рд╣рдореЗрдВ рдлреЙрд░реНрдо рдХрд╛ рдкреЗрдЬрд┐рдиреЗрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рез ... рей рек рел рем 12 ... резреи
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рдкреЗрдЬрд┐рдиреЗрд╢рди рд╡реНрдпреВ рдФрд░
рдкреЗрдЬрд┐рдиреЗрд╢рди-рд╡реНрдпреВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рджреЗрдЦреЗрдВ - рдкреЗрдЬрд┐рдиреЗрд╢рди рд╡реНрдпреВ
window.PaginationView = Backbone.View.extend({ template: _.template($("#pagination-view").html()),
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рдЬрд╛рддрд┐рдпреЛрдВ рдХрд╛ рдРрд╕рд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдкрд░рдореЗрд╕ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рдЙрджреНрджреЗрд╢реНрдп рд╣реИред
рдЕрдм рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреГрд╖реНрдард╛рдВрдХрди, рдпрд╛ рджреГрд╢реНрдп рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрди рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд╕рдХреНрд░рд┐рдп рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╛рдиреА рдЖрдзреЗ рдореЗрдВ рдмрд╛рдВрдЯ рджреЛред
var range = Math.floor(this.page_show / 2); var nav_begin = this.page_active - range; if (this.page_show % 2 == 0) {
рдЖрдЧреЗ рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рд╣рд░ рддрд░рдл рд╕реЗ "..." рджреЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╣рдо рджреЛ рдЪрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:
var left_dots = true; var right_dots = true;
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╣рдореЗрдВ "..." рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдм рд╢реБрд░реБрдЖрдд 2 (рдмрд╛рдИрдВ рдУрд░) рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИ рдФрд░ рдЬрдм рд╢реБрд░реБрдЖрдд рдЕрдВрдд рд╕реЗ рдХрдо рд╣реЛрддреА рд╣реИ - 1 (рджрд╛рдИрдВ рдУрд░)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рдЪреЗрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдХреНрд░рд┐рдп рджреВрд╕рд░рд╛ рд╣реИ, рддреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЗрдХрд╛рдИ рдореЗрдВ рдПрдХ рдФрд░ рддрддреНрд╡ рд╣реИред
рез реи рей рек рел рем ... резреи
рдФрд░ рдЕрдВрдд рдореЗрдВ рднреАред
1 ... 7 8 9 10 11 12
if (nav_begin <= 2) { nav_end = this.page_show; if (nav_begin == 2) { nav_end++; } nav_begin = 1; left_dots = false; } if (nav_end >= this.page_count - 1 ) { nav_begin = this.page_count - this.page_show + 1; if (nav_end == this.page_count - 1) { nav_begin--; } nav_end = this.page_count; right_dots = false; }
рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВ:
$(this.el).html( this.template({ link: this.link, page_count: this.page_count, page_active: this.page_active, nav_begin: nav_begin, nav_end: nav_end, left_dots: left_dots, right_dots: right_dots }) );
рдкреЗрдЬрд┐рдиреЗрд╢рди-рд╡реНрдпреВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ
рдЯреНрд╡рд┐рдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯред рддреБрдЪреНрдЫ рдореБрджреНрджрд╛ред
<ul> <% if (page_active > 1) { %> <li><a href="<%= link %><%= page_active-1 %>">┬л</a></li> <% } %> <% if (left_dots) {%> <li><a href="<%= link %>1">1</a></li> <li class="disabled"><a href="#">...</a></li> <% } %> <% for (var i = nav_begin; i <= nav_end; i++) { %> <li <% if (page_active == i) print('class="active"') %> ><a href="<%= link %><%= i %>"><%= i %></a></li> <% } %> <% if (right_dots) {%> <li class="disabled"><a href="#">...</a></li> <li><a href="<%= link %><%= page_count %>"><%= page_count %></a></li> <% } %> <% if (page_active < page_count) { %> <li><a href="<%= link %><%= page_active+1 %>">┬╗</a></li> <% } %> </ul>
рдкреБрдирд╢реНрдЪ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗ рдФрд░ рдЙрдкрдпреЛрдЧ :)ред
рдкреАрдкреАрдПрд╕ рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдореИрдВ рдмреИрдХрдмреЛрди рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред рдЖрдкрдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред