Backbone.js рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдкрд░ рдЕрдВрдХ рд▓рдЧрд╛рдирд╛

рд╢реБрдн рджреЛрдкрд╣рд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВрдиреЗ Backbone.js рдХреЗ рд▓рд┐рдП рдкреЗрдЬрд┐рдиреЗрд╢рди рд▓рд┐рдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╢рд╛рдпрдж рдХреЛрдИ рдХрд╛рдо рдЖрдПрдЧрд╛ред

рд╣рдореЗрдВ рдлреЙрд░реНрдо рдХрд╛ рдкреЗрдЬрд┐рдиреЗрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рез ... рей рек рел рем 12 ... резреи

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреЗрдЬрд┐рдиреЗрд╢рди рд╡реНрдпреВ рдФрд░ рдкреЗрдЬрд┐рдиреЗрд╢рди-рд╡реНрдпреВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рджреЗрдЦреЗрдВ - рдкреЗрдЬрд┐рдиреЗрд╢рди рд╡реНрдпреВ


window.PaginationView = Backbone.View.extend({ template: _.template($("#pagination-view").html()), //  link: "", //  page_count: null, // -  page_active: null, //   page_show: 5, // -     attributes: { //   "class": "pagination" }, initialize: function(params) { //  this.link = params.link; this.page_count = params.page_count; if (this.page_count <= this.page_show) { this.page_show = this.page_count; } this.page_active = params.page_active; }, render: function(eventName) { //  ... } }); 

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рдЬрд╛рддрд┐рдпреЛрдВ рдХрд╛ рдРрд╕рд╛ рд╡рд┐рд╡рд░рдг рд╣реИред рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдкрд░рдореЗрд╕ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рдЙрджреНрджреЗрд╢реНрдп рд╣реИред

рдЕрдм рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреГрд╖реНрдард╛рдВрдХрди, рдпрд╛ рджреГрд╢реНрдп рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрди рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд╕рдХреНрд░рд┐рдп рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╛рдиреА рдЖрдзреЗ рдореЗрдВ рдмрд╛рдВрдЯ рджреЛред

 var range = Math.floor(this.page_show / 2); var nav_begin = this.page_active - range; if (this.page_show % 2 == 0) { //   - nav_begin++; } var nav_end = this.page_active + range; 

рдЖрдЧреЗ рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рд╣рд░ рддрд░рдл рд╕реЗ "..." рджреЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╣рдо рджреЛ рдЪрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:

 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> 


рдкреБрдирд╢реНрдЪ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗ рдФрд░ рдЙрдкрдпреЛрдЧ :)ред
рдкреАрдкреАрдПрд╕ рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, рдореИрдВ рдмреИрдХрдмреЛрди рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред рдЖрдкрдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/In160651/


All Articles