рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдВрдЧреБрд▓рд░ рдХреЗ рд╕рд╛рде рдкреНрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕рд┐рд░реНрдл рд░реВрдкрд░реЗрдЦрд╛ рдбрд╛рди рд╡рд╛рд╣рд▓рд┐рди рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдмреНрд▓реЙрдЧ рдкрд░ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рд╡реНрдпрд░реНрде рдореЗрдВ - рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдЪрд╛рд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рдореЗрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рджреВрд╕рд░реЗ рдкреГрд╖реНрда рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдХреИрд╕реЗ рдмрдВрдж рдХрд░реЗрдВред
рдЕрдиреБрд╡рд╛рджрдХ рд╢рдмреНрджрдХреЛрд╢:
- рджреЗрдЦреЗрдВ - рдЯреЗрдореНрдкрд▓реЗрдЯ
- рдорд╛рд░реНрдЧ - рдорд╛рд░реНрдЧ, рдорд╛рд░реНрдЧ
- рдиреЗрд╡рд┐рдЧреЗрд╢рди - рд╕рдВрдХреНрд░рдордг
рд░реВрдЯрд┐рдВрдЧ рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде AngularJS рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреИрдЯрд░реНрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЬрдмрдХрд┐ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкрде рдкрд░ рд╕реАрдзреЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдРрд╕реА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рд╕реА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрд░рд╡рд╛рдИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдХреА рдмрдЪрдд) рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рдВрдХреНрд░рдордг рд╢реБрд░реВ рдХрд░реЗрдЧрд╛ред рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЖрдк рд╕рдВрдХреНрд░рдордг рдХреЛ рд░рджреНрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рдЕрдкрдирд╛ рдХрд╛рдо рдЦрддреНрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдпрд╛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
$ LocationChangeStart рдШрдЯрдирд╛
рдЬрдм рдПрдХ AngularJS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХрдИ рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ $ рд╕реНрдерд╛рдирдЪрдХреНрд░рд╕реНрдЯрд╛рд░реНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ $ рдорд╛рд░реНрдЧрдЪрдХреНрд░рд╕реНрдЯрд╛рд░реНрдЯ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдФрд░ рдЕрдзрд┐рдХ) рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ (рд╕рдВрд╕реНрдХрд░рдг 1.2), $ рдорд╛рд░реНрдЧрдЪрдХреНрд░рд╕реНрдЯрд╛рд░реНрдЯ рдИрд╡реЗрдВрдЯ рд╕рдВрдХреНрд░рдордг рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди $ рд▓реЛрдХреЗрд╢рдирдЪреЗрдВрдЬрд╕реНрдЯрд╛рд░реНрдЯ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред рдпрджрд┐ рдЖрдк AngularJS рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рдЕрдиреБрднрд╛рдЧ рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ $ рд▓реЛрдХреЗрд╢рди рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
$browser.onUrlChange(function (newUrl) { if ($location.absUrl() != newUrl) { if ($rootScope.$broadcast('$locationChangeStart', newUrl, $location.absUrl()).defaultPrevented) { $browser.url($location.absUrl()); return; } $rootScope.$evalAsync(function () { var oldUrl = $location.absUrl(); $location.$$parse(newUrl); afterLocationChange(oldUrl); }); if (!$rootScope.$$phase) $rootScope.$digest(); } });
рдХреЛрдб рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ $ рдкреНрд░рд╕рд╛рд░рдг рдХрд╣ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдХреЙрд▓ рд╕рднреА рдЪрд╛рдЗрд▓реНрдб рд╕реНрдХреЛрдк рдХреЗ рд▓рд┐рдП $ рд▓реЛрдХреЗрд╢рди рдЪреЗрдВрдЬрд╕реНрдЯрд╛рд░реНрдЯ рдЗрд╡реЗрдВрдЯ рдХреЛ рднреЗрдЬрддреА рд╣реИ, рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд▓реЛрдХреЗрд╢рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рд╕реВрдЪрдирд╛ рджреА рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк $ rootScope.on () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ $ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ () рдЬреЛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
function init() {
рдпрд╣ рдХреЛрдб $ рд▓реЛрдХреЗрд╢рди рдЪреЗрдВрдЬрд╕реНрдЯрд╛рд░реНрдЯ рдИрд╡реЗрдВрдЯ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрдм рдпрд╣ рд╣реЛрддрд╛ рд╣реИ рддреЛ рд░реВрдЯрдЪреЗрдВрдЬ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдлрдВрдХреНрд╢рди рдкрд░ $ рдХрд╛ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ "рдХреИрдВрд╕рд┐рд▓рд┐рдВрдЧ рд╡реЗрдЯрд┐рдВрдЧ" рдлрдВрдХреНрд╢рди рд╣реИ, рдЬрд┐рд╕реЗ рдЗрд╡реЗрдВрдЯ рдХреЗ рдЗрдВрддрдЬрд╝рд╛рд░ рдореЗрдВ рд░реБрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕реЗ onRouteChangeOff (рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рдЬрд▓реНрдж рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд░реВрдЯ рдХреНрд░реЙрд╕рд┐рдВрдЧ рд░рджреНрдж рдХрд░реЗрдВ
рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд░реВрдЯрдЪреЗрдВрдЬ () рдХреЛ $ рд▓реЛрдХреЗрд╢рдирдЪреЗрдВрдЬрд╕реНрдЯрд╛рд░реНрдЯ рдЗрд╡реЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрд╡рд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

рдпрд╣рд╛рдБ рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
function routeChange(event, newUrl) {
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ, рдЖрдк рдИрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдирдП рдорд╛рд░реНрдЧ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЖрдкрдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ event.preventDefault () рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ modalService.showModal () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореЛрдбрд▓ рд╕реЗрд╡рд╛ рдкрд░
рдореЗрд░реА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдЬреЛ рдХреЛрдгреАрдп UI рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реЗ $ modal рд╕реЗрд╡рд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдЖрд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред
рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ" рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рд░рджреНрдж рдХрд░ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЖрд╡реЗрджрди рдЖрд╡рд╢реНрдпрдХ рдорд╛рд░реНрдЧ рдкрд░ рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ onRouteChangeOff () рдлрд╝рдВрдХреНрд╢рди (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ $ рдХреЙрд▓ рдХрд░рдХреЗ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ $ рд▓реЛрдХреЗрд╢рди рдЪреЗрдВрдЬрд╕реНрдЯрд╛рд░реНрдЯ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рд╣рдо рдЕрдирджреЗрдЦрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдмрдЯрди рдХреНрд▓рд┐рдХ рд╣реЛрдиреЗ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдХреЗ рдЕрдирдВрдд рд▓реВрдк рдореЗрдВ рдлрдВрд╕ рди рдЬрд╛рдПрдВред
рддрдм рджрд┐рдП рдЧрдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП $ location.path (newUrl) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд░рджреНрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╡рд░реНрддрдорд╛рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рд░рд╣реЗрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╕рдВрдХреНрд░рдордг рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдХреБрдВрдЬреА рдпрд╣ рд╕рдордЭ рд░рд╣реА рд╣реИ рдХрд┐ $ рд▓реЛрдХреЗрд╢рдирдЪреЗрдВрдЬрд╕реНрдЯрд╛рд░реНрдЯ рдШрдЯрдирд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдп $ рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╡реЗрдВрдЯ рдХреА рдорджрдж рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд▓рд╣рд╛рд▓ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреЛрдб
рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рдмрдВрдзрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЬреЛ рдЧрд┐рддреБрдм (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╕реНрдЯрдорд░рдбрд┐рдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ) рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ
рдпрд╣рд╛рдВ ред