рдореИрдВ AngularJS рдореЗрдВ рдирдпрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рд╢реМрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред рдХрд╛рдлреА рдЬрд▓реНрджреА, рдореБрдЭреЗ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░реВрдЯрд┐рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХреГрдд рд╣реИ рдпрд╛ рдирд╣реАрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдЦреБрд▓реЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдкреГрд╖реНрда рдЬрд╣рд╛рдБ рдЖрдк рдХреЗрд╡рд▓ рд▓реЙрдЧ рдЗрди рдХрд░рдХреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рд▓реЙрдЧрд┐рди рдкреГрд╖реНрда рдкрд░ рд╕рд╣реА рдХрд░реЗрдВред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдпрд╣ рдХрд╛рд░реНрдп рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЗрд╕реЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рддреИрдпрд╛рд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рд╕рдордп рдХреА рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐ рдЦрд░реНрдЪ рдХрд░рдиреЗ, рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рдиреЗ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдв рдирд┐рдХрд╛рд▓рд╛ред рдореИрдВ рдЕрдкрдиреА рдмрд╛рдЗрдХ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЬрд▓реНрджрдмрд╛рдЬреА рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ AngularJS рдХреЗ рд╕рдорд╛рди рдиреМрд╕рд┐рдЦрд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдПрдХ рдЧреБрд░реБ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдорд╛рдирдХ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрднреА рддрдХ
рдпреВрдЖрдИ-рд░рд╛рдЙрдЯрд░ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рд╣реИред
рдХрд╛рд░реНрдп
рдпрд╣ рдореЗрд░реЗ рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд▓рд┐рдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдПрдХ рд╕рд┐рдВрдЧрд▓ рдкреЗрдЬ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рд╕рд┐рдВрдЧрд▓ рдкреЗрдЬ рдПрдкреНрд▓реАрдХреЗрд╢рди) рд╣реИред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд▓рдн "рдореБрдЦреНрдп" рдкреГрд╖реНрда рдкрде рдХреЗ рд╕рд╛рде "/" рд╣реИ, рдЬреЛ рдХрд┐ рд╕рд╛рдЗрдЯ рдХреЗ рдореВрд▓ рдореЗрдВ рд╣реИред рдЙрд╕ рдкрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдпрд╛ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдлрд▓ рд▓реЙрдЧрд┐рди рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЯреЛрдХрди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдПрдХ рдлреИрд▓рдиреЗ рд╡рд╛рд▓реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдФрд░, рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рд▓реЙрдЧрд┐рди рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рднрд╛рдЧреЛрдВ рдореЗрдВ рдирд╣реАрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЯреЛрдХрди рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреЗрдЬ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рднреА рдмрдВрдж рдкреГрд╖реНрдареЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рдкреБрдирдГ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдмреБрдХрдорд╛рд░реНрдХ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рдЖрджрд┐ред рдореЗрд░реЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рд▓реЛрдб рдХреА рдЧрдИ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЯреЛрдХрди рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдореИрдВ рдХрд┐рд╕реА рдорд┐рддреНрд░ рдХреЛ рд╕рд╛рдЗрдЯ рдХреЗ рдмрдВрдж рдкреГрд╖реНрда рдХрд╛ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рд╕рд╛рдЗрдЯ рдХреЛ рдореБрдЭреЗ (рдпрд╛ рдПрдХ рдорд┐рддреНрд░ рдХреЛ) рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ
Google рдиреЗ "рдПрдВрдЧреБрд▓рд░рдЬрд╕ рд╕рд╢рд░реНрдд рд░реВрдЯрд┐рдВрдЧ" рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдЬрд╛рд░реА рдХреА рдЧрдИ рдПрдХрдорд╛рддреНрд░ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ
рдкрд░ рдпрд╣
рдкреНрд░рд╢реНрди рд╣реИ ред рджреЛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ:
рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рд╕реЗ 401 рд╕реНрдерд┐рддрд┐ рднреЗрдЬрдирд╛ рдФрд░ $ http рд╕реЗрд╡рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рд░реЛрдХрдирд╛ рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рдкреГрд╖реНрда рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдорд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдирд╣реАрдВ - рдореИрдВ рдПрдХ рдмрд╛рд░ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рди рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдЦрддреНрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рджреВрд╕рд░рд╛ рд╕рдВрджреЗрд╢ $ рдорд╛рд░реНрдЧрдХреНрд░реЗрд╕реНрдЯрд╕реНрдЯрд╛рд░реНрдЯ рдХреЛ рд░реЛрдХрдирд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реИ рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, $ рд╕реНрдХреЛрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрде рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╕реБрдиреЛред $ рд╡реЙрдЪ (рдлрд╝рдВрдХреНрд╢рди () {$ $ рд╕реНрдерд╛рди.рдкрд╛рде ();};) рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдиреБрдХрд╕рд╛рди рд╣реИрдВ:
1. $ рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдЧрд▓реА рд╡рд╕реНрддреБ рд░реВрдЯрд┐рдВрдЧ рдорд╛рд░реНрдЧ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ; рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдХрд╣рд╛рдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ; рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдЧреИрд░-рдореМрдЬреВрдж рдкреГрд╖реНрдареЛрдВ рд╕реЗ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдкрд░ рднреА рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд░реВрдЯрд┐рдВрдЧ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реЛрдВрдЧреА, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдирд╛рдо, рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рдЕрдиреНрдп рдЕрдЬреАрдм рдЪреАрдЬреЛрдВ рд╕реЗ рдмрдВрдзреЗ рд╣реЛрдВрдЧреЗред
2. рдпрджрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдЕрдВрдд рддрдХ рд░реВрдЯрд┐рдВрдЧ рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░реВрдЯрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рд╣реА рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рдПрдХ рдирдпрд╛ рд╕реБрдкрд░ рдСрдлрд╝рд░ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝рдиреЗ рдФрд░ рддрддреНрдХрд╛рд▓ рдЗрд╕ рдСрдлрд╝рд░ рдХреЗ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ "рдбрд╛рдЙрдирд▓реЛрдб рдкреГрд╖реНрда" рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдЪрд╛рд░ рдерд╛, рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░реВрдЯрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдлреИрд▓рд╛ рд╣реБрдЖ рд╣реИ - рдПрдХ рдореЗрдВ рд╣рдо рдкрде рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ рдбреЗрдЯрд╛ рдореЗрдВ; рджреВрд╕рд░реЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдпрд╣ рдордзреНрдпрд╡рд░реНрддреА рдкреГрд╖реНрда рд╣реЛрдЧрд╛ред рдЖрдк $ location.replace () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдорд┐рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдореЗрдВ рджреЗрд░реА рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рддреЛ рдЧрд▓рдд рдкреГрд╖реНрда рдорд┐рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рджреВрд╕рд░реЗ рдкреГрд╖реНрда рд╕реЗ рднреА рд╕рд╣реА рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдорд╛рдорд▓рд╛ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕рд░рд▓рддрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рддреАрд╕рд░рд╛, рд╣рдореЗрдВ рдЙрд╕ рдЬрдЧрд╣ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдП рдереЗ, "рджреВрд╕рд░реА" рд╕реНрдерд┐рддрд┐ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред рдЗрд╕ рдлреИрд╕рд▓реЗ рдиреЗ рдореБрдЭреЗ рдкреНрд░реЗрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рдЦреЛрдЬ рдЬрд╛рд░реА рд░рдЦреАред
рдирд┐рд░реНрдгрдп
AngularJS рджрд┐рд▓рдЪрд╕реНрдк рдирд╛рдо $ q рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрдк
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпреВ рдФрд░ рд╕реНрдердЧрд┐рдд / рд╡рд╛рджрд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ
var defered = $q.defer();
рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ, рд╣рдо рд╡рд╛рджрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХреЛрдб рджреЗрддреЗ рд╣реИрдВ
return defered.promise;
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдСрдкрд░реЗрд╢рди рд╕рдлрд▓рддрд╛ рдФрд░ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдХреЙрд▓рдмреИрдХ рдХреЗ рд╡рд╛рджреЗ рдкрд░ рд▓рдЯрдХреЗ рд╣реБрдП рд╣реИрдВ
promise.then(function (result) {...}, function (reason) {...});
рдЕрдм рдЬрдм рд╣рдо рдЕрдкрдиреА рд╕реБрд╡рд┐рдзрд╛рдиреБрд╕рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
defered.resolve(result);
рдпрд╛
defered.reject();
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрдкрдпреБрдХреНрдд рдХреЙрд▓рдмреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдпрдорд┐рдд рдХреЙрд▓рдмреИрдХ рд╕реЗ рдмреЗрд╣рддрд░ рдХреНрдпрд╛ рд╣реИ? рд╡рд╛рджреЛрдВ рдХреЛ рдЬрдВрдЬреАрд░реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ) рдФрд░, рдЬреЛ рдореЗрд░реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХрдИ AngularJS рд╕реЗрд╡рд╛рдПрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ $ рд░рд╛рдКрдЯрд░рдкреЙрдЗрдбрд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЖрдк рдорд╛рд░реНрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рд╕рдВрдХрд▓реНрдк рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдПрдХ рд╡рд╛рджрд╛ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдРрд╕реЗ рд╡рд╛рджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рд╡рд╛рджрд╛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдорд╛рд░реНрдЧ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрджрд┐ рдЕрд╕реНрд╡реАрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╕рднреА рдЪреЗрдХ рдФрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╡рд╛рджреЗ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╡рд╛рджреЗ рдХреЛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреБрд░рд╛рдирд╛ рдорд╛рд░реНрдЧ рд╡реНрдпрд░реНрде рди рд╣реЛред
рд╕рдорд╛рдзрд╛рди рдХреЛрдб:
'use strict'; var app = angular.module('app', []) .config(['$routeProvider', function($routeProvider) { $routeProvider .when('/', { templateUrl: "login.html", controller: LoginController }) .when('/private', { templateUrl: "private.html", controller: PrivateController, resolve: { factory: checkRouting } }) .when('/private/anotherpage', { templateUrl:"another-private.html", controller: AnotherPriveController, resolve: { factory: checkRouting } }) .otherwise({ redirectTo: '/' }); }]); var checkRouting= function ($q, $rootScope, $location) { if ($rootScope.userProfile) { return true; } else { var defered = $q.defer(); $http.post("/loadUserProfile", { userToken: "blah" }) .success(function (response) { $rootScope.userProfile = response.userProfile; defered.resolve(true); }) .error(function () { defered.reject(); $location.path("/"); }); return defered.promise; } };
рдирддреАрдЬрддрди, рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдирд┐рдХрд▓рд╛, рдпрд╣ рдФрд░ рднреА рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдЕрднреА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ (рдЕрдм, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдЗрд╕реЗ рдвреВрдВрдврдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛)ред рдХрдорд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдУрд░ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЦреЛрдЬ рдФрд░ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддрд╛ рд╣реИ - рдЖрдк рдПрдХ рд╣реА рдЪреЗрдХ * рдлрд╝рдВрдХреНрд╢рди (рдпрджрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ) рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЕрджреНрдпрддрди: рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдиреЗ рдореБрдЭреЗ $ http.post () рд╕реЗ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╡рд╛рджреЛрдВ рдХреЗ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд╕рд╛рде рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ $ http рд╕реЗрд╡рд╛ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рддрд░рд╣ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╡рд╛рджреЛрдВ рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рд╢рд╛рдВрдд рд╕реНрдкрд╖реНрдЯ рд╡рд┐рднрд╛рдЬрди рдЪрд░рдгреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЕрдиреБрдмрдВрдз рдХреЗ рд╕рд╛рде рдорд┐рд▓рддрд╛ рд╣реИред
рд╡рд╛рджреЗ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рддрдВрддреНрд░ рдпрд╣ рд╣реИ: рддрддреНрдХрд╛рд▓реАрди рд╡рд╛рджрд╛ рд╡рд┐рдзрд┐ рдПрдХ рдФрд░ "рд╡реНрдпреБрддреНрдкрдиреНрди" рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рддрдм рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд░рд┐рд╡рд╛рд▓реНрд╡рд░ рдпрд╛ рд░реАрдЬреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдЦреБрдж рд╣реА рд╡рд╛рджрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд╛рджреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд╛рджрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ $ q.reject () рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рдорд╛рдзрд╛рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: