рдПрдВрдЧреБрд▓рд░ рдХреЗ рдореБрдЦреНрдп рдбреЗрд╡рд▓рдкрд░ рдорд┐рд╢реНрдХреЛ рд╣реЗрд╡рд░реА рдиреЗ рдПрдХ рдмрд╛рд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдпрджрд┐ рдХреЛрдИ 100 рд╕реЗ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рджреГрд╢реНрдпрддрд╛ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрд╡реЗрджрди рдХреЛ рдмреНрд░реЗрдХ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдо рддреМрд░ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдЦреЗрд▓ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡реЗ рдЙрд╕ рдЪреАрдЬрд╝ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд╡реЗрдм рдкрд░ рдпрд╣ рдЕрднреА рднреА рдХрдИ рд╣рдЬрд╛рд░ рддрддреНрд╡реЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЗрдПрд╕ рдЪреМрдЦрдЯреЗ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдбреЛрдо рд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдордзреНрдпрд╡рд░реНрддреА рдЯреИрдЧ, рдмрд╛рдЗрдВрдбрд░ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдХреНрд░реАрди рдкрд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдмрдбрд╝реА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдХреБрдЫ рд▓реЗрдЦ рдорд┐рд▓реЗ:
рдЗрд╕рдореЗрдВ, рд▓рдбрд╝рдХрд╛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдПрдВрдЧреБрд▓рд░ рдХреА рдЯреАрдо рдореЗрдВ Google рдореЗрдВ рдЗрдВрдЯрд░реНрдирд╢рд┐рдк рдорд┐рд▓реА рдереА рдФрд░ рдЙрд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред (рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реА рдЕрдВрддрд╣реАрди рд╕реНрдХреНрд░реЙрд▓ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рд╕рдорд░реНрдерди рджреЗрдЦрдиреЗ рдХреЛ рдорд┐рд▓реЗрдЧрд╛)ред
рджреЛ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ: рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ рдкреГрд╖реНрдард╛рдВрдХрди рдФрд░ рдЕрдВрддрд╣реАрди рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдВрддрд╣реАрди рд╕реНрдХреНрд░реЙрд▓ рджреЛрдиреЛрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, IOS рд╕реЗ UITableView рдШрдЯрдХ рдореЗрдВред рд▓реЗрдЦрдХ рдиреЗ рдЗрд╕ рдШрдЯрдХ рдХреЛ рдПрдВрдЧреБрд▓рд░ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

рдЕрдкрдиреЗ рдШреБрдордХреНрдХрдбрд╝ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ
рдореБрдЦреНрдп рдореЙрдбрд▓ рдХреЗ рддрд░реНрдХ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рддрд░реНрдХ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдХрдИ рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдорд╛рдЙрд╕ рдХреЗ рдЧреНрд░рд┐рдб, рд╕реНрддрдВрднреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕реВрдЪреА рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдмрд╣реБрдд рд▓рд┐рдЦрдирд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рдЙрд╕реЗ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╕реАрдПрд╕рдПрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрдЦреЗ рдЧрдП рдбреЗрдЯрд╛ рдкрд░ рд▓реМрдЯ рдЖрдП рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдЙрджреНрдпрдо рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡реЛрдВ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП,
рдкреГрд╖реНрда рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ (рдкреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдСрдлрд╕реЗрдЯ рдХреЛ рдкрд┐рдЫрд▓реЗ (рдпрд╛ рдмрд╛рдж рдореЗрдВ, рдпрджрд┐ рд╣рдо рдирдП рддрддреНрд╡реЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ) рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХрддрдо рддрддреНрд╡ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдВрдХреБрд░рдг рдореВрд▓ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдШрдЯрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░
рд╕рдВрдкреВрд░реНрдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдФрд░
рдЖрдВрддрд░рд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╕реНрдерд╛рдиреАрдп рд╣реЛред

рд╡рд┐рдЪрд╛рд░ рдбреЗрдЯрд╛ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рдПрдХ рдЦрд╛рд▓реА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рд╣реИ (рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдзрд┐рдд рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реИ)ред рдлрд┐рд░, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдлрд░ рдХреЗ рдЕрдВрдд рддрдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рднрд╛рдЧ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реАрд▓реЛрдбрд░ рдХреЛ рдЗрд╕ рд╕рдордп рд╕рдмрд╕реЗ рдиреАрдЪреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреЗ рдКрдкрд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ DOM рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рдЖрдЗрдЯрдореЛрдВ рдХреЗ рдкреВрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдирдпрд╛ рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдШрдЯрдХ рдкрд╣рд▓реЗ рдпрд╣ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рддрддреНрд╡ рд╣реИрдВ рдФрд░ рдпрд╛ рддреЛ рдореМрдЬреВрджрд╛ рддрддреНрд╡реЛрдВ рдХреЛ рдирдП рдХреЗ рд╕рд╛рде рдмрджрд▓рддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдирдпрд╛ рддрддреНрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдлрд┐рд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛рдкрд╕ (рдКрдкрд░) рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рднреА рдпрд╣реА рд╣реЛрддрд╛ рд╣реИред рдЬреЛ рдЖрдЗрдЯрдо рдЕрдВрдд рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдкреВрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рджреГрд╢реНрдпрдорд╛рди рдЖрдЗрдЯрдо рд╕реЗ рдкрд╣рд▓реЗ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╣рдЯрд╛рдП рдЧрдП рдЖрдЗрдЯрдо рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡реНрдпреВрдкреЛрд░реНрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдХрдИ рдЖрдЗрдЯрдо рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдЙрдирд╕реЗ рдлрд┐рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдХреИрд╢ рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред

рд╕реНрдХреНрд░реЛрд▓рд░ рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ
рдХрдИ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛
рд╕рдорд░реНрдерди рд╣реИ , рддрд╛рдХрд┐ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрддреНрд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреЗрд╕рдмреБрдХ рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ, рдлреЛрдЯреЛ, рд▓рд┐рдВрдХ рдЖрджрд┐ рдЬреИрд╕реЗ рддрддреНрд╡ред
рдиреНрдпреВрдирддрдо HTML рдПрдХ рдШреБрдордХреНрдХрдбрд╝ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
<div ng-scroller> <div ng-scroller-repeat=тАЭpost in postsтАЭ> <div>{{post.author}}: {{post.text}}</div> </div> </div>
ng-scroller
рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдПрдХ рд╡реНрдпреВрдкреЛрд░реНрдЯ рд╣реИ,
ng-scroller-repeat
рд╡рд╛рд▓рд╛ рдПрдХ рддрддреНрд╡ рдПрдХ рдХрдВрдЯреЗрдирд░ (рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдореЗрдВ рдиреАрд▓рд╛ рдХреНрд╖реЗрддреНрд░) рдФрд░ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рддрддреНрд╡ рд╣реИ рдЬрд┐рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рдЪрд╛рдЗрд▓реНрдб рд╕реНрдХреЛрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдЧрд╛ред
рд╕реНрдХреЛрдк рдХреА рдХреБрдВрдЬреА, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдЗрдЯрдо рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреБрдВрдЬреА рдХрд┐рд╕реА рд╕рд░рдгреА рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИ, рддреЛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд▓рд┐рдкрдЯреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
IScrollerDataStore { void getRangeAfter(prev_id, length, function(Error, Array)); void getRangeBefore(next_id, length, function(Error, Array)); }
рдпрджрд┐ рдХрдИ рдкреИрдЯрд░реНрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ
ng-if
рдФрд░
ng-switch
рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
<div ng-scroller> <div ng-scroller-repeat=тАЭpost in postsтАЭ> <div ng-class=тАЭ{ link: post.link, photo: post.photo }тАЭ> {{post.author}}: <a ng-if="post.link" href=тАЭ{{post.link}}тАЭ>{{post.link}}</a> <img ng-if="post.photo" ng-src=тАЭ{{post.photo}}тАЭ> </div> </div>
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╡рд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реНрдХреЛрд░рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд▓реЛрдЧреЛрдВ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рдореБрдЦреНрдп рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ "рдбрд╛рдЙрдирд▓реЛрдб рдЕрдзрд┐рдХ" рдмрдЯрди рдХреЗ рд╕рд╛рде рдорд╛рдорд▓рд╛ рд╣реИ, рдЖрджрд┐ред
рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ, рдЕрдХреНрд╕рд░ рдЬреНрд╡рд╛рд░реАрдп рддрддреНрд╡ рдмрдирд╛рдпреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрд╕реНрдЯрд╛рдЧреНрд░рд╛рдо рдкрд░ рдкрдВрдХреНрддрд┐, рдЯреЗрдмрд▓ рд╣реЗрдбрд░, рдлреБрдЯрд░, рдЯреЗрдмрд▓ рд░реЛ рдФрд░ рдХреЙрд▓рдо, рдХреЙрдиреНрдЯреИрдХреНрдЯ рд▓рд┐рд╕реНрдЯ рд╣реЗрдбрд░, рдЬреЛ рдХреЗрд╡рд▓ рддрднреА рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ рдЬрдм рддрддреНрд╡ рджреЗрдЦрдиреЗ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рддрддреНрд╡ рд╣реЛрддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рджреЛ рдкреНрд░рдХрд╛рд░ рд╢реБрджреНрдз рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЪрд┐рдкрдЪрд┐рдкрд╛рд╣рдЯ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред
рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ Google рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕рдорд╛рди рдШрдЯрдХ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╕рд╛рдереА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╕рд╛рде рдШреБрдордХреНрдХрдбрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА, рддреЛ рдЙрд╕рдиреЗ рдореБрдЭреЗ
рд╣рдЯрд╛рдП рдЧрдП рд╕рд╛рдорд╛рдиреЛрдВ рдХреА
рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдмрд╣рд╛рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЯреНрд╡реАрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг: рдЖрдк рдПрдХ рдЯреНрд╡реАрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реА рдмрд╛рддрдЪреАрдд рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдХрд░реЗрдВ рдпрджрд┐, рдЦреБрд▓реЗ рдЯреНрд╡реАрдЯ рдХреЛ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╡рд╣ DOM рдХреЛ рдЫреЛрдбрд╝ рджреЗ, рдФрд░ рдлрд┐рд░ рд╡рд╛рдкрд╕ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВред рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред
рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рдпрд╛ рддреЛ
ng-scroller-repeat
(рдпрд╛рдиреА
tweet.open = true
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рддрддреНрд╡ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдкрддреНрд░рд╛рдЪрд╛рд░ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдХрд░ рдЧреБрдВрдЬрд╛рдЗрд╢ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрдиреНрд╣реЗрдВ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдлрд┐рд░ рд╕реЗред
рдлрд┐рд▓рд╣рд╛рд▓, рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЪреБрдирд╛ рд╣реИред
рдЧрд┐рдердм рдкрд░рд┐рдпреЛрдЬрдирд╛ ,
рдбреЗрдореЛрдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡рд┐рдЪрд╛рд░ рдХрд╛рдлреА рдареЛрд╕ рд╣реИрдВред
2. AngularJS рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧред рднрд╛рдЧ рез , рднрд╛рдЧ реи
рдпрд╣рд╛рдБ, рдЖрджрдореА рдиреЗ
ng-repeat
рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛, рдЬрд┐рд╕реЗ
sf-repeat
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд▓реЙрдЧ рд▓реЙрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред
<div style="overflow: scroll; height:200px;"> <ol> <li ng-repeat="event in eventLog">{{event.time}}: {{event.message}} </ol> </div>
рдЙрдирдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдбрд╛рдпрдиреЗрдорд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреЗрдЬреЗрд╢рди рдХрд░рдирд╛ рдПрдХ рдмреБрд░реА рдмрд╛рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ / рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдпрд╛ рдЦреЛрдП рд╣реБрдП рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рд╣реИрдВред
рдПрдХ рдлрд┐рд▓реНрдЯрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ
angular.module('sf.virtualScroll').filter('sublist', function(){ return function(input, range, start){ return input.slice(start, start+range); }; });
<div style="overflow: scroll; height:200px;"> <ol> <li ng-repeat="event in eventLog|sublist:rows:offset">{{event.time}}: {{event.message}}</li> </ol> </div>
рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ:
event
рдХреЗ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рдЧрдгрдирд╛ рд╣рд░ рдмрд╛рд░ рдПрдХ рдЧрдВрджреЗ рдЪреЗрдХ рдХреЗ рджреМрд░рд╛рди рдФрд░ рдкрд┐рдЫрд▓реЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЗрд╡рд▓ рджреГрд╢реНрдпрдорд╛рди рд╢реНрд░реЗрдгреА рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░реАрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдорд╛рди рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕реВрдЪреА рдХреА рджреГрд╢реНрдпрдорд╛рди рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред
рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рддрд╛рдХрд┐ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдЬреБрдбрд╝реА рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреА рд╕реАрдорд╛ (рдпрд╛рдиреА,
overflow: scroll
рд╕рд╛рде рдбреАрдЖрдИрд╡реА
overflow: scroll
) рдореЗрдВ рдмрджрд▓рд╛рд╡ рди рд╣реЛ, рдЖрдкрдХреЛ рдЦрд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЯреНрд░рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЦрд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рдХреА рдКрдВрдЪрд╛рдИ рдХреЛ рдмрджрд▓рдХрд░, рд╣рдо рд╕реНрдХреНрд░реЙрд▓ рд░реЗрдВрдЬ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХреА рдКрдВрдЪрд╛рдИ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдпрд╣рд╛рдБ рд▓реЗрдЦрдХ рддрддреНрд╡ рдХреА рдФрд╕рдд рдКрдБрдЪрд╛рдИ рд▓реЗрдиреЗ рдФрд░ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд░реЛрд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЬрд╣рд╛рдВ рддрддреНрд╡реЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдЕрд▓рдЧ рд░рд╣рддрд╛ рд╣реИред
рдЕрдкрдиреЗ рд╕реНрдХреНрд░реЙрд▓ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ:
<div style="overflow: scroll; height:200px;"> <div sf-scroller="y = 0 to eventLog.length" ng-model="slicePosition"></div> </div>
рдПрдХ рд╢реНрд░реЗрдгреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (y = 0 to eventLog.length) рдкрд╛рд░реНрд╕ рдХрд░рдирд╛
function parseRangeExpression (expression) { var match = expression.match(/^(x|y)\s*(=|in)\s*(.+) to (.+)$/); if( !match ){
рдЖрджреЗрд╢
var mod = angular.module('sf.virtualScroll'); mod.directive("sfScroller", function(){
рд╡рд╣ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХрдорд┐рдпреЛрдВ рдХреЛ рдиреЛрдЯ рдХрд░рддрд╛ рд╣реИ: рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдкрдирд╛ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рдореВрд▓ рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред
ng-repeat
рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдХрд░рддрд╛
рд╣реИ ,
рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛
рд╣реИ ред
рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдХреНрд▓реВрдбреЗ рдирд┐рд░реНрджреЗрд╢ рдФрд░ рд╕рдВрдХрд▓рди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд░рд▓ рдирд┐рд░реНрджреЗрд╢ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рдЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди
ng-repeat
рдХреЛ рдПрдХ рдмрд╛рдЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ (рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, "рд╕рдВрдХрд▓рди рдФрд░ рдмрдВрдзрди рдЪрд░рдг рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг"
рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЧрд╛рдЗрдб рдХрд╛ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ)ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдмрд╛рдЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди
ng-repeat
рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡реЙрдЪ-рд╡реЙрдЪрд░реНрд╕ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрддреНрд╡реЛрдВ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреЗ рд╕рдорд╛рди рдПрдХ рддрддреНрд╡ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдкрд╛рд╕ DOM рдореЗрдВ рдХреБрдЫ рд╕реНрдерд┐рддрд┐ рд╣реИ (рдПрдХ рдлрд╛рд░реНрдо рддрддреНрд╡ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ), рддреЛ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдзрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдХреЛрдИ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╣рдо рд╕рднреА рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдирдП рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдореМрдЬреВрджрд╛ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЛрдб рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдЯрд╛рддреЗ рд╕рдордп DOM рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рд╛рдЬреНрдп рдХреЛ рдореЙрдбрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦрдХ рдиреЗ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдерд╛)
ng-repeat
рдХреА рдПрдХ рдФрд░ рд╕реВрдХреНрд╖реНрдорддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЛ
for(key in collection)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдЕрдиреБрдХреНрд░рдорд┐рдд рдФрд░ рддрддреНрд╡реЛрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИред
рдЕрдкрдиреЗ
sf-repeat
рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рднрд╛рдЧреЛрдВ рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рдж рдФрд░ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдЬреЛрдбрд╝реЗ рдпрд╛ рд╣рдЯрд╛рдП рдЧрдП рд╣реИрдВред рдирд┐рд╢рд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рд╛рдЗрди рдХреА рдКрдВрдЪрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХрд▓рди / рдЕрд╕реЗрдВрдмрд▓реА рдЪрд░рдг рдореЗрдВ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рддрддреНрд╡ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реАрдПрд╕рдПрд╕ (рд╕реНрдкрд╖реНрдЯ рдпрд╛ рдЕрдзрд┐рдХрддрдо) рд╕реЗ рдКрдВрдЪрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИред
рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреА рдКрдВрдЪрд╛рдИ рднреА CSS рд╕реЗ рд▓реА рдЧрдИ рд╣реИред
рдЖрджреЗрд╢
var mod = angular.module('sf.virtualScroll'); mod.directive("sfVirtualRepeat", function(){ return { transclude: 'element', priority: 1000, terminal: true, compile: sfVirtualRepeatCompile };
рд╕рдВрдХрд▓рди рд╕рдорд╛рд░реЛрд╣
function sfVirtualRepeatCompile(element, attr, linker) { var ident = parseRepeatExpression(attr.sfVirtualRepeat), LOW_WATER = 100, HIGH_WATER = 200; return { post: sfVirtualRepeatPostLink };
рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХреЛрдВ рдХреЛ рдмрд╛рдВрдзрддреЗ рд╣реИрдВ рдФрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЗ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдКрдкрд░реА рдФрд░ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░реЛрдВ рдХреЗ рд▓реЗрдмрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдХреНрд░рд┐рдп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЖрдХрд╛рд░ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рджреГрд╢реНрдп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдЗрд╡реЗрдВрдЯ рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рд╕реАрдорд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдЧрд╛ред
рдСрдмреНрдЬрд░реНрд╡рд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдирдИ рд╕рдХреНрд░рд┐рдп рд╕реАрдорд╛ рдХреА рдореМрдЬреВрджрд╛ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдФрд░ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реЗ рдмрдирд╛рдирд╛ рд╣реИред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рддрддреНрд╡реЛрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдкреВрд░реНрдг рддрддреНрд╡ рдпрд╛ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рд▓реЗрдЦрдХ рдЗрдВрдбреЗрдВрдЯ рд╣реИред
sf.virtualScroll
sf-virtual-repeat
рдбрд╛рдпрд░реЗрдХреНрдЯрд┐рд╡ github рдкрд░
sf.virtualScroll
рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рд╕реНрд░реЛрдд ,
рдмреЛрд╡рд░ рдШрдЯрдХ ,
рдбреЗрдореЛ ред
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд▓реЗрдЦ рдЕрдирдВрдд рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ
PS
рд▓рд┐рдВрдХреНрдбрдЗрди рдбреЗрд╡рд▓рдкрд░ рд░рд┐рд╕рд░реНрдЪрдкреАрдкреАрдПрд╕
рдкреНрд░рд╢реНрди рдЯреЛрд╕реНрдЯрд░ рдкрд░ ред рджрд┐рд▓рдЪрд╕реНрдк рдЬрд╡рд╛рдм рд╣реИрдВред