AngularJS рдмрдирд╛рдо KnockoutJS

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

рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди


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

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ




рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛


рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдХреЗ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
рдХреЛрдгреАрдп рдХреА рд╕рдордЭ рдореЗрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред $ рд╕реНрдХреЛрдк рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЖрдЧреЗред рдирд┐рд░реНрджреЗрд╢ HTML рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВред
рдмрджрд▓реЗ рдореЗрдВ, рдиреЙрдХрдЖрдЙрдЯ рдиреЗ рдореЙрдбрд▓рд╡реНрдпреВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА, рдЬреЛ рдореЙрдбрд▓ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдорд┐рд╢реНрд░рдг рд╣реИред Ko.bindingHandlers рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рднреАрддрд░ рдбреЗрдЯрд╛-рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИрдВ, рдЬреЛ рдХреЛрдгреАрдп рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рдореЙрдбрд▓ рдФрд░ рдЙрд╕рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдФрд░ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдПрд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛ рдХреА рдмрд╛рдд рдХрд░реЗрдВ рддреЛ рдПрдПрдордбреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ред рдХреЛрдгреАрдп рдФрд░ рдиреЙрдХрдЖрдЙрдЯ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдПрдПрдордбреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЙрд╕рдиреЗ рдХреЛрдгреАрдп рдФрд░ рдиреЙрдХрдЖрдЙрдЯ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЦреБрдж рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: http://www.kendoui.com/blogs/teamblog/posts/13-05-08/requirejs-fundamentals.aspx рдФрд░ http://habrahabr.ru/post/152833/ ред

рдорд╛рдирдХреАрдХрд░рдг



(рдЗрддрдиреА рдЦреВрдмрд╕реВрд░рдд рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП AngularJS рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж)

рдлрд┐рд▓рд╣рд╛рд▓, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, jQuery рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ)ред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ, рдПрдХ рдирдИ рд▓рд╛рдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЖрдВрддрд░рд┐рдХ HTML рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдВрдЫрд┐рдд DOM рддрддреНрд╡ рдореЗрдВ рдЪрд┐рдкрдХрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рд╣рд░ рдмрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдХрдИ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдкрдврд╝рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореЙрдбрд▓ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдЦреЛрдирд╛, рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг, рдбреЗрдЯрд╛ рдФрд░ / рдпрд╛ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдХреЛрдгреАрдп рдФрд░ рдиреЙрдХрдЖрдЙрдЯ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рджреЛ рддрд░рд╣ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реАред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЙрдбрд▓ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрда рддрддреНрд╡ рдХреЗ рджреНрд╡рд┐рджрд┐рд╢ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдХрд╛рдлреА рд╕реНрдерд┐рд░ рдбреЛрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдиреЙрдХрдЖрдЙрдЯ рдореЗрдВ, рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдФрд░ рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреНрд╡рд┐рджрд┐рд╢ рд╕рдВрдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, jQuery HTML рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдПрдХ рд╕рдорд╛рди рджреЗрд╢реА рдкрд╛рд░реНрд╕рд░)ред рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдореЙрдбрд▓ рддрддреНрд╡ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЙрдбрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдлрд╝рдВрдХреНрд╢рди рд╕реНрдХреЛрдк рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдХреЗ рдкрд╣рд▓реЗ рдореЙрдбрд▓ рддрддреНрд╡ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдХреНрд▓реЛрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдХреЛрдгреАрдп рдореЗрдВ, рджреНрд╡рд┐рджрд┐рд╢ рд╕рдВрдЪрд╛рд░ рд╕реАрдзреЗ рд╕рдВрдХрд▓рдХ ($ рд╕рдВрдХрд▓рди рд╕реЗрд╡рд╛) рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрд╡рд▓реЛрдХрди рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореЙрдбрд▓ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдХреЛрдгреАрдп рдФрд░ рдиреЙрдХрдЖрдЙрдЯ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреЛрдгреАрдп DOM рддрддреНрд╡реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рддрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ; рдиреЙрдХрдЖрдЙрдЯ - рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рдЗрдирд░-HTML рдХреЛ рдЬреЗрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдиреЙрдХрдЖрдЙрдЯ рдХреЛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ (рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдереЛрдбрд╝рд╛ рдХрдо рд╣реИ)ред

рдбреЗрдЯрд╛ рдореЙрдбрд▓


рдПрдВрдЧреБрд▓рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ $ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕реЗрд╡рд╛ рдкрд░ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕реЗрд╡рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдХреЛрдгреАрдп рдПрдХ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдорд╛рдирддрд╛ рд╣реИ, $ рдЧреБрдВрдЬрд╛рдЗрд╢ рдореЗрдВ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рднреА рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рднреАрддрд░, $ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ $ rootScope рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИред рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ $ рд╕реНрдХреЛрдк рдХрд╛ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдЙрд╕ $ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╕реЗ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдВрдЧреБрд▓рд░ рдореЗрдВ $ рдЧреБрдВрдЬрд╛рдЗрд╢ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рдирд╛ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА рдЖрд╕рд╛рди рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреЙрдк-рдЕрдкред

рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ


рдиреЙрдХрдЖрдЙрдЯ рдореЗрдВ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ, рдХреЛрдгреАрдп рдореЗрдВ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдЪрдЯреАрдПрдордПрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдирдИ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВ рдбреЗрдЯрд╛-рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛-рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╣реИред
рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ:
AngularJS: http://habrahabr.ru/post/164493/ , http://habrahabr.ru/post/179755/ , http://habrahabr.ru/post/180365/
рдиреЙрдХрдЖрдЙрдЯJS: http://www.knockmeout.net/2011/07/another-look-at-custom-bindings-for.html
рдореИрдВ рдХреЛрдгреАрдп рдореЗрдВ рдлрд┐рд▓реНрдЯрд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдиреЙрдХрдЖрдЙрдЯ рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред


рдЙрджрд╛рд╣рд░рдг


рдлреАрдХрд╛-рдПрдиреАрдореЗрд╢рди рдореЗрдВ
AngularJS: http://jsfiddle.net/yVEqU/
var ocUtils = angular.module("ocUtils", []); ocUtils.directive('ocFadeIn', [function () { return { restrict: 'A', link: function(scope, element, attrs) { $(element).fadeIn("slow"); } }; }]); function MyCtrl($scope) { this.$scope = $scope; $scope.items = []; $scope.add = function () { $scope.items.push('new one'); } $scope.pop = function () { $scope.items.pop(); } } 

рдиреЙрдХрдЖрдЙрдЯ: http://jsfiddle.net/fH3TY/
 var MyViewModel = { items: ko.observableArray([]), fadeIn: function (element) { console.log(element); $(element[1]).fadeIn(); }, add: function () { this.items.push("fade me in aoutomatically"); }, pop: function () { this.items.pop(); } }; ko.applyBindings(MyViewModel, $("#knockout")['0']); 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓ рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдлреАрдХрд╛-рдмрд╛рд╣рд░ рдПрдиреАрдореЗрд╢рди
AngularJS: http://jsfiddle.net/SGvej/
 var FADE_OUT_TIMEOUT = 500; var ocUtils = angular.module("ocUtils", []); ocUtils.directive('ocFadeOut', [function () { return { restrict: 'A', link: function(scope, element, attrs) { scope.$watch(attrs["ocFadeOut"], function (value) { if (value) { $(element).fadeOut(FADE_OUT_TIMEOUT); } }); } }; }]); function MyCtrl($scope, $timeout) { this.$scope = $scope; $scope.items = []; $scope.add = function () { $scope.items.push({removed: false}); } $scope.pop = function () { $scope.items[$scope.items.length - 1].removed = true; $timeout(function () { $scope.items.pop(); console.log($scope.items.length); }, FADE_OUT_TIMEOUT); } } 

рдиреЙрдХрдЖрдЙрдЯ: http://jsfiddle.net/Bzb7f/1/
 var MyViewModel = { items: ko.observableArray([]), fadeOut: function (element) { console.log(element); if (element.nodeType === 3) { return; } $(element).fadeOut(function () { $(this).remove(); }); }, add: function () { this.items.push("fade me in aoutomatically"); }, pop: function () { this.items.pop(); } }; ko.applyBindings(MyViewModel, $("#knockout")['0']); 

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

рдкреЙрдкрдЕрдк
AngularJS: http://jsfiddle.net/vmuha/EvvY7/ , http://angular-ui.imtqy.com/bootstrap/ (рджреВрд╕рд░реЗ рд▓рд┐рдВрдХ рдореЗрдВ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдЪреНрдЫреЗ рдФрд░ рдЙрдкрдпреЛрдЧреА рдЙрдкрд╛рдп рдорд┐рд▓реЗрдВрдЧреЗ)
 var ocUtils = angular.module("ocUtils", []); function MyCtrl($scope, $compile) { var me = this; this.$scope = $scope; $scope.open = function (data) { var popupScope = $scope.$new(); popupScope.data = data; me.popup = $("<div class=\"popup\">{{data}}<br /><a href=\"#\" ng-click=\"close($event)\"> Close me</a></div>"); $compile(me.popup)(popupScope); $("body").append(me.popup); } $scope.close = function () { if (me.popup) { me.popup.fadeOut(function () { $(this).remove(); }); } } } 

рдиреЙрдХрдЖрдЙрдЯ: http://jsfiddle.net/vmuha/uwezZ/ , http://jsfiddle.net/vmuha/HbVPp/
 var jQueryWidget = function(element, valueAccessor, name, constructor) { var options = ko.utils.unwrapObservable(valueAccessor()); var $element = $(element); setTimeout(function() { constructor($element, options) }, 0); //$element.data(name, $widget); }; ko.bindingHandlers.dialog = { init: function(element, valueAccessor, allBindingsAccessor, viewModel) { console.log("init"); jQueryWidget(element, valueAccessor, 'dialog', function($element, options) { console.log("Creating dialog on " + $element); return $element.dialog(options); }); } }; ko.bindingHandlers.dialogcmd = { init: function(element, valueAccessor, allBindingsAccessor, viewModel) { $(element).button().click(function() { var options = ko.utils.unwrapObservable(valueAccessor()); $('#' + options.id).dialog(options.cmd || 'open'); }); } }; var viewModel = { label: ko.observable('dialog test') }; ko.applyBindings(viewModel); 

рдкреЙрдкрдЕрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдирд┐рд░реНрджреЗрд╢ рдпрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдФрд░ рдПрдХ ViewModel рдпрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВред
рдХреЛрдгреАрдп рдореЗрдВ, рдкреЙрдкрдЕрдк рдХреЛ $ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $ рд╕рдВрдХрд▓рди рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдиреЙрдХрдЖрдЙрдЯ рдореЗрдВ, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рдирдпрд╛ рдореЙрдбрд▓ рджреГрд╢реНрдп рдмрдирд╛рдПрдВ рдФрд░ рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП applyBindings рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдкреЙрдкрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдиреЙрдХрдЖрдЙрдЯ рдХреЛ рдкреЙрдкрдЕрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ $ rootModel рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред рдиреЙрдХрдЖрдЙрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреНрд░рдорд╢рдГ DOM рддрддреНрд╡реЛрдВ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрджрд┐ рдкреЙрдкрдЕрдк рдХрдВрдЯреЗрдирд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд╣рд░ рд╣реИ, рддреЛ рдкреЙрдкрдЕрдк рдореЗрдВ $ rootModel рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдореВрд▓реНрдп рд╕реНрд╡рд░реВрдкрдг
AngularJS: http://jsfiddle.net/vmuha/k6ztB/1/
рдиреЙрдХрдЖрдЙрдЯ: http://jsfiddle.net/vmuha/6yqDw/


рдЙрддреНрдкрд╛рджрдХрддрд╛


рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред 2 рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП: "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!" рдХреА рдардВрдбреА рд╢реБрд░реБрдЖрдд рдФрд░ 1000 рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрдиред
рд╕рднреА рдЖрд░реЗрдЦреЛрдВ рдкрд░, рд▓рдВрдмрд╡рдд - рдорд┐рд▓реАрд╕реЗрдХрдВрдб, рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдкреНрд░рдпреЛрдЧ рдХреА рд╕рдВрдЦреНрдпрд╛ред


рдпрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдиреЙрдХрдЖрдЙрдЯ рдХреА рдардВрдб рд╢реБрд░реВ рд╕реЗ рдХреЛрдгреАрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред


рд▓реЗрдХрд┐рди рдЬрдм рдпрд╣ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдХреЛрдгреАрдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рдХреЗ рдиреЗрддрд╛ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо 1000 рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦрддреЗ рд╣реИрдВ, рдиреЙрдХрдЖрдЙрдЯ 2.5 рд╕реЗрдХрдВрдб рддрдХ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдореЗрдВ 500 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реЗ рдХрдо рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕реНрдХреНрд░реАрди рдкрд░ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ: рдХреЛрдгреАрдп рдХреЗ рд▓рд┐рдП рдпрд╣ 1-3 рд╕реЗрдХрдВрдб рд╣реИ, рдФрд░ рдиреЙрдХрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣ 14-20 рд╕реЗрдХрдВрдб рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдиреЙрдХрдЖрдЙрдЯ рддрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдгреАрдп рдбреЛрдо рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред


рд╕рд╛рд░рд╛рдВрд╢


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


рдкреБрдирд╢реНрдЪ:

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рд╕рднреА рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ, рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдФрд░ рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА! рдореИрдВ рдЖрдк рд╕рднреА рдХреЗ рд╕реБрдЦрдж рдХрд╛рдо рдХреА рдХрд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдБ!

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


All Articles