
рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП
Knockout.js рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░
рдореЙрдбрд▓-рд╡реНрдпреВ-рд╡реНрдпреВ рдореЙрдбрд▓ (MVVM) рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣реЛрдмреЗ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ (
рдПрдХ ,
рджреЛ ,
рддреАрди ,
рдЪрд╛рд░ ,
рдкрд╛рдВрдЪ ,
рд╡реАрдбрд┐рдпреЛ )ред рдЖрдк Knockout.js рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА
рд╕реАрдЦ рд╕рдХрддреЗ
рд╣реИрдВ - рдЖрдЦрд┐рд░рдХрд╛рд░,
рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкреНрд░рдгрд╛рд▓реА рд╣реИ ,
рд▓рд╛рдЗрд╡ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ (рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкреЛрдХ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рдЙрддреНрдХреГрд╖реНрдЯ
рдкреНрд░рд▓реЗрдЦрди ред
рдмрд╣реБрдд рдмрд╛рд░, Knockout.js
ASP.NET MVC рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреНрд▓рд╛рдЗрдВрдЯ рд▓реЙрдЬрд┐рдХ рдХреЗ рд▓реЗрдЦрди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ: рдЗрд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рддрд░реНрдХ рдХрд╛ рдореБрдЦреНрдп рдореЙрдбрд▓ рдФрд░ рд╣рд┐рд╕реНрд╕рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдФрд░ рд╕рд░реНрд╡рд░ (рд╕реА # / рд╡реАрдмреА) рджреЛрдиреЛрдВ рдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд░реНрд╡рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рдЕрдкреАрд▓ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдирд┐рдпрдорд┐рдд рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд▓реЗрдХрд┐рди рджреБрдЦреА рдордд рд╣реЛ! рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕
рдиреЙрдХрдЖрдЙрдЯ рдПрдорд╡реАрд╕реА рд╣реИ - рдпрд╣ рдиреЙрдХрдЖрдЙрдЯ.рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП .NET рд╢реЗрд▓ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдХреЗрд╡рд▓ C # рдореЗрдВ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ MVVM рд╢реИрд▓реА рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ HTML рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕ рдореЙрдбрд▓ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдФрд░ рдЖрдк рдкреВрд░реЗ рднрд╛рд╡ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╡реЗ js рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реЛрдВрдЧреЗ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдПрдХ рднреА рд▓рд╛рдЗрди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдкреВрд░реНрдг рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!
рдФрд░ рдЕрдм рдереЛрдбрд╝рд╛ рдФрд░
рдЖрджрд░реНрд╢
рдореЙрдбрд▓ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрд╣рддреЗ рд╣реИрдВ, C # рдореЗрдВ)ред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░, рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рди рдХреЗрд╡рд▓ рд╕рд╛рдзрд╛рд░рдг рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднреА рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реЛрдВрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рдм рди рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рд╕рдмрдореЙрдбрд▓реНрд╕ (рд╢реБрджреНрдз рдиреЙрдХрдЖрдЙрдЯ рдкрд░ рднреА рд╣реЛрддрд╛ рд╣реИред рдЬреЗрдПрд╕ рдРрд╕рд╛ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
public class Item { public string FirstName { get; set; } public string LastName { get; set; } public Expression<Func<string>> FullName() { return () => FirstName + " " + LastName; } } public class Model { public List<Items> Items { get; set; } }
рдФрд░ рдирд┐рдореНрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ:
var viewModelJs = {"Items":[{"FirstName":"Annabelle","LastName":"Arnie"},{"FirstName":"Bertie","LastName":"Brianna"},{"FirstName":"Charles","LastName":"Cayenne"}]}; var viewModelMappingData = { 'Items': { create: function(options) { var data = ko.mapping.fromJS(options.data); data.FullName = ko.computed(function() { try { return this.FirstName()+' '+this.LastName()} catch(e) { return null; } ;}, data); return data; }}}; var viewModel = ko.mapping.fromJS(viewModelJs, viewModelMappingData); ko.applyBindings(viewModel);
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкрд░рд┐рдгрд╛рдореА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде, рдкреЗрди рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдирд╛ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбрд▓ рдФрд░ C # рдореЙрдбрд▓ рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдЗрд╕ рдореЙрдбрд▓ рдкрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП C # рдореЙрдбрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред
рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ
рдпрджрд┐ рдЖрдк ASP.NET MVC рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд░реЗрдЬрд░ рд╡реНрдпреВ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдЗрдВрдЬрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЙрдЪрд┐рдд рд╣реИ - рдпрд╣ рд╕рд╛рдЗрдЯ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рдЙрдард╛рддрд╛ рд╣реИред рд░реЗрдЬрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВред
рдЦреИрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреА рдХреБрдЫ рд╕рдВрдкрддреНрддрд┐
рдП рдХрд╛ рдореВрд▓реНрдп рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд▓рд┐рдЦрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
@ko.Html.TextBox(m => mA)
рдХреЛрд╖реНрдардХ рдореЗрдВ рдПрдХ рд▓рдВрдмреЛрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдореЙрдбрд▓
рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ
рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдВрдзрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо C # рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ IntelliSense рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддрд╛ рд╣реИ:

рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рддреА рд╕реЗ рдирд╛рдо рдЧрд▓рдд рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рднреА рдкрддрд╛ рд▓рдЧрд╛рдКрдВрдЧрд╛ - рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рд▓рд╛рд▓ рдкрдЯреНрдЯреА рд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдХрд╣реАрдВ рдореИрдВ рдЧрд▓рдд рдерд╛ред
рдЦреИрд░, рдЕрдм рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рджреЗрдЦрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдореЗрд░реЗ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рд╕рд╛рде рджреЛ рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдХреЗрд╡рд▓ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рдХрд╛ рдПрдХ рднрд╛рдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд▓рд┐рдЦрдирд╛ рд╣реИ:
@using (ko.If(model => model.Condition1 && model.Condition2))
рдЕрдЧрд▓рд╛, рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ, рдкреНрд░рд╕реНрддреБрддрд┐ рдХрд╛ рд╕рдВрдЧрдд рд╣рд┐рд╕реНрд╕рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд░рд▓, рд╕рд╣реА? рдЖрдЦрд┐рд░рдХрд╛рд░, рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рддреБрд░рдВрдд рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рдореЗрдВ рдХрдВрдбреАрд╢рди 1 рдФрд░ рдХрдВрдбреАрд╢рди 2 рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЗрдПрд╕-рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдЬреЛ рддрддреНрд╡реЛрдВ рдХреА рджреГрд╢реНрдпрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдЧрд╛, рдЖрджрд┐ред рдФрд░ рдЕрдЧрд░ рд╣рдо рд╢рд░реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдпрд╛ рдПрдХ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдЬрд╛рджреВ рд╣рдорд╛рд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рд╣реА рдХрд░реЗрдЧрд╛ (рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЙрддреНрдкрдиреНрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╣реА рд╣реЛ рдЬрд╛рдПрдЧрд╛)ред
рдиреЙрдХрдЖрдЙрдЯ MVC рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧреА рдирд┐рд░реНрдорд╛рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:
@using (var items = ko.Forearch(m => m.Items))
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдЦреИрд░, рдЕрдм рдПрдХ рдмрдЯрди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореЙрдбрд▓ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рд╡рд░реНрддрдорд╛рди рдореЙрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
- рд╣рдореЗрдВ рдЕрдкрдиреЗ рдмрдЯрди рдХреЛ рдЕрдЬрд╛рдХреНрд╕-рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдХрд┐рд╕реА рддрд░рд╣ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рддрд░реНрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
рдЗрд╕реЗ рд░реЛрдХреЛ! рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ! рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
@ko.Html.Button("Some text", "FooAction", "Foo")
рдПрдХ рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдкрд╛рдардХ рдкреВрдЫреЗрдЧрд╛: "рдФрд░ рдЕрдЧрд░ рдореИрдВ рд╕рд░реНрд╡рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ?" рдХреБрдЫ рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ:
@ko.Html.Button("Some text", "FooAction", "Foo", new { index = 0, caption = "Knockout MVC"})
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ:
public class FooController : KnockoutController { public ActionResult FooAction(FooModel model, int index, string caption) { model.FooAction(index, caption);
рд╡рд╣ рд╕рдм рд╣реИ! рдЖрдкрдХреЛ рдПрдХ рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрди рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ! рдЖрдк рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рд╕рд╛рде рдореЗрдВ рддрдХрдиреАрдХреА рджрд┐рдирдЪрд░реНрдпрд╛ - рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдореЙрдбрд▓ рд▓реЙрдЬрд┐рдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ! рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдм
рдпрд╣рд╛рдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛
рд╣реИрд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рд╕реАрдзреЗ Knockout.js рдореЗрдВ рдЬреЛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ - рдпрд╣
рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ ред рдЬрдм рдЖрдк рдиреЗрд╕реНрдЯреЗрдб
foreach
рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЗ
with
рдиреЗрд╕реНрдЯреЗрдб
foreach
рдкреИрджрд╛ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реНрддрд░ рдХрд╛ рдШреЛрдВрд╕рд▓рд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдПрдХ рдЬрдЯрд┐рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ 4-5 рд╕реНрддрд░ рдХреА рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рддреЛ рдХрднреА-рдХрднреА рдЖрдк рдлреЙрд░реНрдо
$parents[2].name
$parentContext.$parentContext.$parentContext.$index
рдпрд╛
$parentContext.$parentContext.$parentContext.$index
рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВ
$parentContext.$parentContext.$parentContext.$index
ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдФрд░ рдЬрдм рдпрд╣ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреБрдЦреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдиреЙрдХрдЖрдЙрдЯ MVC рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ - рдЕрдм рд╣рд░ рд╕рдВрджрд░реНрдн рдХрд╛ рдЕрдкрдирд╛ рдирд╛рдо рд╣реИ! рдФрд░ рдЕрдм рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
@using (var subModel = ko.With(m => m.SubModel)) { using (var subSubModel = subModel.With(m => m.SubSubModel)) { @subSubModel.Html.Span(m => ko.Model.A + " " + subModel.GetIndex() + " " + mB) } }
рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЦреБрдж рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧреА:
<span data-bind="text : $parents[1].A()+' '+$parentContext.$index()+' '+B()"></span>
рдЖрдк
рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдиреНрдп рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдмрдиреНрд╕
рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдХрднреА-рдХрднреА рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдбреЗрдЯрд╛ред рдЬрдм рдХреЛрдИ рдкреГрд╖реНрда рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ - рдпрд╣ рд╣рдореЗрд╢рд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛрддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдПрдХ рдЕрд╕рдВрддреБрд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд╛рдЙрдирд▓реЛрдб рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд╛рдЗрдЯ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдкреГрд╖реНрда рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред рдиреЙрдХрдЖрдЙрдЯ MVC рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдЬрдЧрд╣ рдПрдХ рдЫреЛрдЯрд╛ рд╢рдмреНрдж
Lazy
рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ Lazy
рдФрд░ рдирд┐рд╣рд╛рд░рдирд╛ - рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреБрдХреНрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рдЕрднреА рднреА рдЕрдЪреНрдЫреЗ рд╣реИрдВред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдм рдПрдХ рдЬреАрд╡рд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИред - рдХрд╕реНрдЯрдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдирд╛ ред рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рджреБрдЦрдж рд╕реНрдерд┐рддрд┐ рд╣реИ: рдЖрдкрдиреЗ рдЕрдЧрд▓реЗ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдФрд░ рдврд╛рдВрдЪреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╛ рддреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдпрд╛ рдпрд╣ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдиреЙрдХрдЖрдЙрдЯ MVC рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдбрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ, рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдП рдЧрдП рдореЙрдбрд▓ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЖрдкрдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдЕрд╕реАрдорд┐рдд рд╣реИ! рдФрд░ рдлрд┐рд░ рд╕реЗ рдПрдХ рдЬреАрд╡рд┐рдд рдЙрджрд╛рд╣рд░рдг рд╣реИ
- рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ ред рдпрджрд┐ рдЖрдк рдиреЙрдХрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (jQuery, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, рдЖрджрд┐) рдпрд╛ рдЗрд╕рдХреЗ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк jQuery.Validation рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рд╛рд░рд╛рдВрд╢
рдЗрд╕рд▓рд┐рдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред рдиреЙрдХрдЖрдЙрдЯ MVC рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рд▓реЛрдХрдкреНрд░рд┐рдп рдЬреЙрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдиреЙрдХрдЖрдЙрдЯ.рдЬреЗрдПрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд
- ASP.NET MVC3 рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдПрдХреАрдХрд░рдг
- рдореЙрдбрд▓-рд╡реНрдпреВ-рд╡реНрдпреВ рдореЙрдбрд▓ (MVVM) рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛
- рд╕рднреА рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП) C # / VB рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ
- рдореЙрдбрд▓ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- IntelliSense рд╕рднреА рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
- рдФрд░ рдХрдиреЗрдХреНрдЯреЗрдб js-code рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ (рд╕рдВрдкреАрдбрд╝рд┐рдд рдиреЙрдХрдЖрдЙрдЯ рдореЗрдВ рд▓рдЧрднрдЧ 40Kb рд▓рдЧрддрд╛ рд╣реИ)
- Ajax рдХрд╛ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧ - рд╕рднреА рд╕рд░реНрд╡рд░ рддрд░реАрдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
- рд▓рдШреБ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЬреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ
- рд╡рд┐рдХрд╛рд╕ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ - рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ
- рд▓рдЧрднрдЧ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ: рдХреЗрд╡рд▓ рдиреЙрдХрдЖрдЙрдЯред рдЬреЗрдПрд╕ (рдЦреБрдж рдХреЗ рджреНрд╡рд╛рд░рд╛) рдФрд░ jQuery (рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ)
- рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛: IE 6+, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 2 +, рдУрдкреЗрд░рд╛ 10+, рдХреНрд░реЛрдо, рд╕рдлрд╛рд░реА
- рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛ (jQuery, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдФрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ)
- рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди, рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг, рдХрдИ рдЬреАрд╡рд┐рдд рдЙрджрд╛рд╣рд░рдг
рд╕рдВрджрд░реНрдн