{"id":258492,"date":"2015-06-02T14:38:02","date_gmt":"2015-06-02T10:38:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=258492"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=258492","title":{"rendered":"\u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0435 \u043c\u043d\u043e\u0433\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u043c\u0435\u043d\u044e \u0441\u0430\u0439\u0442\u0430 \u0441 \u0441\u0430\u043c\u043e\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u043c\u0438 \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b AngularJS"},"content":{"rendered":"<p>             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u0434 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0440\u0443\u0447\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e, \u0442.\u043a. \u0435\u0433\u043e \u0443\u0436\u0435 \u043e\u0442\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u043b\u0435\u043d\u0438\u0432\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u043e \u043c\u043d\u043e\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434, \u0430 \u043d\u0430\u0439\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041a \u043c\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e, \u043d\u0438 \u043d\u0430 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445, \u043d\u0438 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u043e\u0434 \u043c\u043e\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u0430 \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043c \u0441 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <u>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044e, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435:<\/u>  <\/p>\n<ol>\n<li> \u0412\u0441\u044f \u043d\u0430\u0447\u0438\u043d\u043a\u0430 \u043c\u0435\u043d\u044e \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u0430 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b. \u041f\u0440\u0438 \u0432\u0435\u0440\u0441\u0442\u043a\u0435 html \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c DOM-\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439, \u0447\u0442\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430.<\/li>\n<li> \u0423 \u043c\u0435\u043d\u044e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442\u044b \u0441 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439.<\/li>\n<li> \u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043c\u0435\u043d\u044e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u043d\u043e \u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li> \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<li> \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\/\u0441\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/li>\n<\/ol>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/EugeneSnihovsky\/angular-navbar\">\u0442\u0443\u0442<\/a><\/b>.<br \/>  <a name=\"habracut\"><\/a><br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0435 \u0441 \u043d\u0443\u043b\u044f, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044f \u043d\u0435 \u0441\u0442\u0430\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0436\u0443 <u>\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432<\/u>:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0441\u043f\u0438\u0441\u043a\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li> <b><a href=\"https:\/\/angularjs.org\">AngularJS<\/a><\/b> \u2014 \u0441\u0443\u043f\u0435\u0440\u0433\u0435\u0440\u043e\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043e\u0442 \u0433\u0443\u0433\u043b\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Model-View-ViewModel\">MVVM<\/a> \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<li> <b><a href=\"https:\/\/github.com\/angular-ui\/ui-router\">UI-router<\/a><\/b> \u2014 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u043e\u0432\u0441\u043a\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u043c\u044b\u0441\u043b\u0438\u043c\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 <a href=\"http:\/\/www.cyberguru.ru\/dotnet\/asp-net\/state-objects.html\">\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u0445<\/a>.<\/li>\n<li> <b><a href=\"https:\/\/github.com\/Narzerus\/angular-permission\">Angular-permission<\/a><\/b> \u2014 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u043e\u0432\u0441\u043a\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c (\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0430\u0440\u0435 \u0441 ui-router), \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430.<\/li>\n<li> <b><a href=\"http:\/\/getbootstrap.com\/\">Bootstrap 3<\/a><\/b> \u2014 CSS-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u0443\u0441\u043a\u043e\u0440\u044f\u044e\u0449\u0438\u0439 \u0432\u0435\u0440\u0441\u0442\u043a\u0443 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446.<\/li>\n<li> <b><a href=\"https:\/\/github.com\/Swiip\/generator-gulp-angular\">Yeoman<\/a><\/b>-\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u2014 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0430\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/li>\n<li> <b><a href=\"http:\/\/bower.io\/\">Bower<\/a><\/b> \u2014 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0449\u0438\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/li>\n<li> <b><a href=\"https:\/\/github.com\/gulpjs\/gulp\/blob\/master\/docs\/getting-started.md\">Gulp<\/a><\/b> \u2014 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0439 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 JS.<\/li>\n<li> <b><a href=\"https:\/\/nodejs.org\/\">NodeJS<\/a><\/b> \u2014 \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/li>\n<\/ol>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>P.S.<\/b>: \u043f\u0443\u043d\u043a\u0442\u044b 5-8 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442 \u0436\u0438\u0437\u043d\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e front-end \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041f\u0435\u0440\u0432\u044b\u043c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u043c \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u043c \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0441\u0442\u0430\u043b\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041c\u0438\u0440 web-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438 \u043c\u043e\u0451 \u043c\u0435\u043d\u044e, \u043b\u0435\u043d\u0438\u0432\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0432 \u0437\u0430\u0432\u0430\u043b\u044f\u0432\u0448\u0435\u043c\u0441\u044f \u043f\u0430\u0440\u0443 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043d\u0430\u043f\u0440\u043e\u0447\u044c \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043f\u0440\u043e\u0431\u043b\u0435\u043c<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li> \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f UI-router \u0432\u044b\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u0435\u0441\u043b\u0438 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 params \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u044f \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u044e (false, 0, undefined, null \u0438\u043b\u0438 \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430). \u0420\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u043a\u0430\u0442\u0438\u043b\u0441\u044f \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u00ab0.2.13\u00bb.<\/li>\n<li> \u0413\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 Yeoman \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u043f\u043e\u043c\u0438\u043c\u043e \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0445, \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433 src \u0441 \u0441\u0430\u043c\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u0412 \u043d\u0435\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f html \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438 \u0442\u0440\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430: <br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img decoding=\"async\" src=\"https:\/\/pp.vk.me\/c622330\/v622330288\/39f46\/7n1fuo9E4X8.jpg\" alt=\"\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\"\/><br \/>  <b>app<\/b> \u2014 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u0430\u043f\u043a\u0443).<br \/>  <b>assets<\/b> \u2014 \u043f\u0430\u043f\u043a\u0430 \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c.<br \/>  <b>components<\/b> \u2014 \u043f\u0430\u043f\u043a\u0430 \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b, \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u0444\u0430\u0431\u0440\u0438\u043a\u0438, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0438 \u0442.\u0434.).<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 Yeoman-\u043e\u0432\u0441\u043a\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 gulp \u043d\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044e (\u0432\u0441\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043a html-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e).<br \/>  \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0430\u043f\u043a\u0430 components \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 app \u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 gulp. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u0438\u0434\u0435\u043b \u043f\u0430\u043f\u043a\u0443 components \u0438 \u043d\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u043b \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043e\u0448\u0438\u0431\u043a\u0443 \u043e\u0431 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f navbar, \u043f\u0440\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 gulp:<br \/> \n<ul>\n<li> \u0441\u043a\u0440\u0438\u043f\u0442 <b>inject.js<\/b>\n<p>  \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 <i>injectScripts<\/i> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442  <\/p>\n<pre><code class=\"javascript\"> options.src + '\/components\/**\/*.js' <\/code><\/pre>\n<p>  \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 <b>injectStyles<\/b> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442   <\/p>\n<pre><code class=\"javascript\">options.src + '\/components\/**\/*.css' <\/code><\/pre>\n<p>   <\/li>\n<li> \u0441\u043a\u0440\u0438\u043f\u0442 <b>watch.js<\/b> \u2014 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430:\n<pre><code class=\"javascript\">gulp.watch(options.src + '\/components\/**\/*.css', function(event) {    if(isOnlyChange(event)) {     browserSync.reload(event.path);   } else {     gulp.start('inject');   } }); gulp.watch(options.src + '\/components\/**\/*.js', function(event) {   if(isOnlyChange(event)) {     gulp.start('scripts');   } else {     gulp.start('inject');   } }); gulp.watch(options.src + '\/components\/**\/*.html', function(event) {   browserSync.reload(event.path); }); <\/code><\/pre>\n<p>  <\/li>\n<\/ul>\n<p>  <\/li>\n<li> \u0422\u0430\u043a \u043a\u0430\u043a \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 \u0431\u0443\u0442\u0441\u0442\u0440\u0430\u043f\u0435, \u0442\u043e, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u043d\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 jQuery. \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, Yeoman \u0431\u0443\u0434\u0435\u0442 \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f jquery, bootstrap \u0438 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c (\u0430\u043d\u0433\u0443\u043b\u044f\u0440\u043e\u0432\u0441\u043a\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b ui-bootstrap \u0438\u043b\u0438 AngularStrap, \u043e\u0444\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u0438\u0435 bootstrap \u0441 jQuery \u043b\u0438\u0431\u043e \u0447\u0438\u0441\u0442\u044b\u0439 CSS). \u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u0434\u0432\u043e\u0445. \u041f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435, \u0435\u0449\u0435 \u0434\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439, \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 jQuery. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e, \u0438\u043d\u0430\u0447\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u043c\u0441\u044f \u0431\u0435\u0437 \u0432\u0430\u0436\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0432\u0441\u0435 \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>P.S.<\/b>: \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e. \u0412\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0449\u0430\u043c\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u0434 \u0441\u0430\u043c\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 jQuery, \u043d\u043e, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u00ab\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u2014 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0439 (\u0441)\u00bb.\n<\/li>\n<li> \u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0431\u0430\u043b\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0433\u0443\u0433\u043b\u043e\u0432\u0441\u043a\u0438\u043c <a href=\"https:\/\/material.angularjs.org\">angular-material<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Yeoman \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e bower \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 &#8212;save.<\/li>\n<\/ol>\n<p>  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0421 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0430\u043c\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u0432\u044b\u043d\u0435\u0441\u0435\u043c <b>html-\u0448\u0430\u0431\u043b\u043e\u043d<\/b> \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"html\">&lt;div class=&quot;container&quot; ng-mouseleave=&quot;closeMenu($event)&quot;&gt;       &lt;div class=&quot;navbar-header&quot;&gt;     &lt;button type=&quot;button&quot; class=&quot;navbar-toggle&quot; ng-click=&quot;collapseMenu($event)&quot;&gt;       &lt;span class=&quot;sr-only&quot;&gt;Toggle navigation&lt;\/span&gt;       &lt;span class=&quot;icon-bar&quot;&gt;&lt;\/span&gt;       &lt;span class=&quot;icon-bar&quot;&gt;&lt;\/span&gt;       &lt;span class=&quot;icon-bar&quot;&gt;&lt;\/span&gt;     &lt;\/button&gt;     &lt;a class=&quot;link-kukuri&quot; href=&quot;#&quot; ui-sref=&quot;{{::sref}}&quot; data-letters=&quot;{{::name}}&quot;&gt;{{::name}}&lt;\/a&gt;   &lt;\/div&gt;   &lt;div id=&quot;navbar&quot; class=&quot;collapse navbar-collapse&quot; aria-expanded=&quot;false&quot; ng-class=&quot;navCollapsed&quot;&gt;     &lt;ul class=&quot;nav navbar-nav navbar-right&quot;&gt;       &lt;li ng-repeat=&quot;items in navbar&quot; class=&quot;{{::menuClass(items.name, 'firstLevel')}} list-status&quot;&gt;         &lt;a href=&quot;#&quot; ng-if=&quot;!items.name.pop&quot; ui-sref=&quot;{{items.state}}&quot; ng-mouseenter=&quot;closeOnMoveMenu()&quot;&gt;{{items.name}}&lt;\/a&gt;         &lt;a href=&quot;#&quot; ng-if=&quot;items.name.pop&quot; class=&quot;dropdown-toggle dropdown-toggle-firstLevel&quot; dropdown-toggle aria-expanded=&quot;false&quot; ng-click=&quot;expandMenu($event)&quot; ng-mouseenter=&quot;expandMenu($event)&quot; ng-mouseleave=&quot;closeSubMenu($event)&quot;&gt;           {{::items.name[0]}}&lt;b class=&quot;caret&quot;&gt;&lt;\/b&gt;         &lt;\/a&gt;         &lt;ul ng-if=&quot;items.name.pop&quot; class=&quot;dropdown-menu&quot;  ng-include=&quot;'submenu.template'&quot;&gt;&lt;\/ul&gt;       &lt;\/li&gt;     &lt;\/ul&gt;   &lt;\/div&gt; &lt;\/div&gt; &lt;script type=&quot;text\/ng-template&quot; id=&quot;submenu.template&quot;&gt;   &lt;li ng-repeat=&quot;items in items.name&quot; ng-if=&quot;$index !== 0&quot; class=&quot;{{::menuClass(items.name)}} sub-menu&quot;&gt;     &lt;a href=&quot;#&quot; class=&quot;sub-link&quot; ng-if=&quot;!items.name.pop&quot; ui-sref=&quot;{{::items.state}}&quot; ng-mouseenter=&quot;closeOnMoveSubMenu($event)&quot;&gt; {{::items.name}}&lt;\/a&gt;     &lt;a href=&quot;#&quot; ng-if=&quot;items.name.pop&quot; class=&quot;dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; ng-click=&quot;expandSubMenu($event)&quot; ng-mouseenter=&quot;expandSubMenu($event)&quot;&gt;        {{::items.name[0]}}     &lt;\/a&gt;     &lt;ul ng-if=&quot;items.name.pop&quot; class=&quot;dropdown-menu&quot;  ng-include=&quot;'submenu.template'&quot;&gt;     &lt;\/ul&gt;   &lt;\/li&gt; &lt;\/script&gt; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0431\u0443\u0442\u0441\u0442\u0440\u0430\u043f\u0430 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043d\u044e\u0430\u043d\u0441\u0430\u043c\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/b><\/p>\n<div class=\"spoiler_text\">  <\/p>\n<ol>\n<li> \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <i>ng-repeat<\/i>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 html-\u0448\u0430\u0431\u043b\u043e\u043d, \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0432 \u043d\u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0441\u043a\u043e\u0443\u043f\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b. \u041e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0435 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 (<i>one time binding<\/i>), \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u2014 \u0434\u0432\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u043e\u0437\u043b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <i>{{::name}}<\/i> ). \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0430\u043d\u0433\u0443\u043b\u044f\u0440 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044f (watcher), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0435 (\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0441\u043a\u043e\u0443\u043f\u0435 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 DOM \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438). \u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0443\u043d\u043a\u0442\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u0435\u043d\u044e \u2014 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435, \u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0432 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0438\u0441\u043b\u043e \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043f\u043e\u0432\u044b\u0441\u0438\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.\n<\/li>\n<li> \u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <i>ng-include<\/i>. \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0442\u0435\u0433\u0435 script c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u043c <i>type=\u00abtext\/ng-template\u00bb<\/i>. \u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c DOM, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 ng-include \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u0438\u0448\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0421\u0430\u043c\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439 <i>ng-if<\/i>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0443\u043d\u043a\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u00ab<a href=\"https:\/\/learn.javascript.ru\/class-instanceof#\u0443\u0442\u0438\u043d\u0430\u044f-\u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f\">\u0443\u0442\u0438\u043d\u043e\u0439 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438<\/a>\u00bb, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u043c\u0430\u0441\u0441\u0438\u0432, \u0442\u043e \u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 (push, pop \u0438 \u0442.\u0434.), \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0435\u0437 () \u0432\u0435\u0440\u043d\u0435\u0442 \u043d\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 true. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430, \u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u043c\u0435\u0442\u043e\u0434\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432\u0435\u0440\u043d\u0435\u0442 undefined.\n<\/li>\n<li> \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043d\u0435\u0433\u043b\u0430\u0441\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0433\u043b\u0430\u0441\u0438\u0442: \u00ab\u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b DOM-\u0434\u0435\u0440\u0435\u0432\u0430 \u0432\u043d\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u00bb. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043a\u043b\u0438\u043a\u0430, \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u043a\u0438\u0434\u0430\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 DOM \u0434\u0435\u0440\u0435\u0432\u0430 \u0438 \u043d\u0430\u0432\u0435\u0448\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445 \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u0435\u0439. \u041d\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u043e\u0432. \u041f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b \ud83d\ude42 \u0414\u043b\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <i>ng-click, ng-mouseenter<\/i> \u0438 <i>ng-mouseleave<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043d\u0430\u0432\u0435\u0448\u0430\u043d\u044b \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.<\/li>\n<\/ol>\n<p>  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0414\u0430\u043b\u0435\u0435 \u0432\u043a\u0440\u0430\u0442\u0446\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c <b>css \u0444\u0430\u0439\u043b<\/b>:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c CSS<\/b><\/p>\n<div class=\"spoiler_text\">@import url(http:\/\/fonts.googleapis.com\/css?family=Gloria+Hallelujah);<br \/>  .navbar-brand {<br \/>   font-family: \u00abGloria Hallelujah\u00bb, Verdana, Tahoma;<br \/>   font-size: 23px;<br \/>  }<br \/>  .sub-menu {<br \/>   background-color: #333;<br \/>  }<br \/>  .sub-menu&gt;a {<br \/>   color: #9d9d9d !important;<br \/>   padding-left: 10px !important;<br \/>  }<br \/>  .dropdown-menu {<br \/>   padding: 0px;<br \/>   margin-left: -1px;<br \/>   margin-right: -1px;<br \/>   min-width: 90px !important;<br \/>  }<br \/>  .dropdown-submenu {<br \/>   position:relative;<br \/>  }<br \/>  .dropdown-submenu&gt;.dropdown-menu {<br \/>   top:0;<br \/>   right:100%;<br \/>   margin-top:6px;<br \/>   margin-left:-1px;<br \/>   -webkit-border-radius:0 6px 6px 6px;<br \/>   -moz-border-radius:0 6px 6px 6px;<br \/>   border-radius:0 6px 6px 6px;<br \/>  }<br \/>  .dropdown-submenu:hover&gt;a:after {<br \/>   border-left-color:#ffffff;<br \/>  }<br \/>  .dropdown-submenu.pull-left {<br \/>   float:none;<br \/>  }<br \/>  .dropdown-submenu.pull-left&gt;.dropdown-menu {<br \/>   left:-100%;<br \/>   margin-left:10px;<br \/>   -webkit-border-radius:6px 0 6px 6px;<br \/>   -moz-border-radius:6px 0 6px 6px;<br \/>   border-radius:6px 0 6px 6px;<br \/>  }<br \/>  .dropdown-submenu&gt;a:before {<br \/>   display:block;<br \/>   content:&quot; &quot;;<br \/>   float:left;<br \/>   width: 0;<br \/>   height: 0;<br \/>   border-style: solid;<br \/>   border-color: transparent #cccccc transparent transparent;<br \/>   margin-top: 7px;<br \/>   margin-left: -5px;<br \/>   margin-right: 10px;<br \/>  }<br \/>  .dropdown-submenu-big&gt;a:before {<br \/>   border-width: 4.5px 7.8px 4.5px 0;<br \/>  }<br \/>  .dropdown-submenu-small&gt;a:before {<br \/>   margin-right: 7px;<br \/>   border-left: 5px solid transparent;<br \/>   border-right: 5px solid transparent;<br \/>   border-top: 5px solid #cccccc;<br \/>  }<br \/>  .dropdown-menu:hover,<br \/>  .dropdown-toggle:focus,<br \/>  li&gt;[aria-expanded=\u00abtrue\u00bb],<br \/>  .navbar-brand:hover,<br \/>  .sub-menu&gt;a:hover,<br \/>  .list-status:hover,<br \/>  .nav .open &gt; a {<br \/>   color: #fff !important;<br \/>   background-color: #004444 !important;<br \/>  }<br \/>  .menu-active,<br \/>  .menu-active&gt;a {<br \/>   font-weight: bold !important;<br \/>   text-decoration: underline;<br \/>  }<br \/>  .navbar-cheat {<br \/>   width: 100%;<br \/>   height: 45px;<br \/>  }<br \/>  .sub-link:before {<br \/>   display:block;<br \/>   content:&quot; &quot;;<br \/>   float:left;<br \/>   width: 12px;<br \/>   height: 5px;<br \/>  }<br \/>  \/* Kukuri *\/<br \/>  .link-kukuri {<br \/>   font-family: \u00abGloria Hallelujah\u00bb;<br \/>   outline: none;<br \/>   text-decoration: none !important;<br \/>   position: relative;<br \/>   font-size: 23px;<br \/>   line-height: 2;<br \/>   color: #c5c2b8;<br \/>   display: inline-block;<br \/>  }<br \/>  .link-kukuri:hover {<br \/>   color: #c5c2b8;<br \/>  }<br \/>  .link-kukuri:hover::after {<br \/>   -webkit-transform: translate3d(100%,0,0);<br \/>   transform: translate3d(100%,0,0);<br \/>  }<br \/>  .link-kukuri::before {<br \/>   content: attr(data-letters);<br \/>   position: absolute;<br \/>   z-index: 2;<br \/>   overflow: hidden;<br \/>   color: #424242;<br \/>   white-space: nowrap;<br \/>   width: 0%;<br \/>   -webkit-transition: width 0.4s 0.0s;<br \/>   transition: width 0.4s 0.0s;<br \/>  }<br \/>  .link-kukuri:hover::before {<br \/>   width: 100%;<br \/>  }<br \/>  .link-kukuri:focus {<br \/>   color: #9e9ba4;<br \/>  }  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e, \u043a\u043e\u0434 \u0434\u043b\u044f \u043c\u0435\u043d\u044e \u00ab\u043e\u0434\u043e\u043b\u0436\u0438\u043b\u00bb <a href=\"http:\/\/www.bootply.com\/nZaxpxfiXz\">\u0442\u0443\u0442<\/a>, \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u043b\u043e\u0433\u043e \u2014 <a href=\"https:\/\/dribbble.com\/shots\/2069400--Kukuri-text-hover-effect\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412\u043e\u0442 \u0442\u0430\u043a \u043d\u0435 \u0441\u043f\u0435\u0448\u0430, \u043c\u044b \u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u0441\u0430\u043c\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u2014 \u043a\u043e\u0434 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u043c\u0435\u043d\u044e \u043d\u0430 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u0435.<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>\u0424\u0430\u0439\u043b navbar.module.js<\/b><\/p>\n<pre><code class=\"javascript\">'use strict'; (function () {     angular.module('navbar', ['ui.router']); })(); <\/code><\/pre>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0430\u043c \u0430\u043d\u0433\u0443\u043b\u044f\u0440 \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a, \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0412\u0430\u043c \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0430\u043a\u043e\u0441\u044f\u0447\u0438\u0442\u044c, \u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0442\u043e\u043d\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u0438\u0439 \u0440\u0435\u0436\u0438\u043c &#8216;<a href=\"https:\/\/learn.javascript.ru\/strict-mode\">use strict<\/a>&#8216; \u0438 \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412\u044b \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435, \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u043e \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b? \u0412\u0441\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043a\u0443\u0441\u043a\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c &#8216;<i>navbar<\/i>&#8216;, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0432\u0435\u0441\u0438\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u0444\u0430\u0431\u0440\u0438\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0440\u0430\u0434\u043e\u0441\u0442\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044c &#8216;<i>navbar<\/i>&#8216;. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0430\u0432\u0435\u0448\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043d\u0435\u0433\u043e, \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u0440\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0438\u0434\u0435\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e &#8216;<i>ui-router<\/i>&#8216;. \u0415\u0441\u043b\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043d\u0435\u0442, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432, \u0438\u043d\u0430\u0447\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0422\u0430\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 <i>config<\/i> (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f) \u0438 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 <i>run<\/i> (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430). \u041e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u043e\u0434 \u044d\u0442\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0432 \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435.<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>\u0424\u0430\u0439\u043b navbar.directive.js<\/b>:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c navbar.directive.js<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">'use strict';  (function () {     angular.module('navbar')         .directive('navbar', function ($document, $state, navbarList, navPermission) {             return {                 restrict: 'A',                 scope: {                     name: '@',                     sref: '@'                 },                 templateUrl: '\/components\/navbar.directive\/navbar.template.html',                 link: function (scope, elem) {                     var openedMenu = null,                         openedSubMenu = null,                         username = navPermission.getUser($state.params); \/\/ \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0435\u043c\u0443 DOM \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b bootstrap                     elem.addClass('navbar navbar-inverse navbar-fixed-top');                     elem.attr('role', 'navigation'); \/\/ \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0438\u0438 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0435\u0433\u043e \u0432 scope \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b                     if(username) {                         navPermission.acceptPermission(navbarList.list, username);                     }                     scope.navbar = navbarList.list; \/\/ \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\/\u0441\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043c\u0435\u043d\u044e \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u0445 \u0438\u043b\u0438 \u043f\u0440\u0438 \u0443\u0437\u043a\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430                     scope.collapseMenu = function ($event) {                         var navbar = elem.find('#navbar'),                             expanded = navbar.hasClass('in');                         navbar.attr('aria-expanded', !expanded);                         scope.navCollapsed = (expanded) ? '' : 'in';                         closeAllMenu();                         stopBubleAndPropagation($event);                     }; \/\/ \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u0434\u043c\u0435\u043d\u044e, \u0435\u0441\u043b\u0438 \u043f\u0443\u043d\u043a\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u044b                     scope.menuClass = function (item, level) {                         var status = false,                             activePage = getActivePage($state.current.name),                             currentPage = (item.pop) ? item[0] : item,                             classList = (level === 'firstLevel') ? 'dropdown dropdown-firstLevel ' :                                 'menu-item dropdown dropdown-submenu ',                             activeClass = (currentPage === activePage || isActive(item, activePage, status) ) ?                                 'menu-active' : '';                         if(item.pop) {                             return classList + activeClass;                         } else {                             return activeClass;                         }                     }; \/\/ \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c)                     function getActivePage(state, currentList) {                         var name;                         if(!currentList) {                             currentList = scope.navbar;                         }                         for(var i = (currentList[0].name) ? 0 : 1; i &lt; currentList.length; i++) {                             if(currentList[i].state === state) {                                 return currentList[i].name;                             } else if(currentList[i].name.pop) {                                 name = getActivePage(state, currentList[i].name);                             }                         }                         return name;                     } \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c                     function isActive (item, activePage, status) {                         if(item.pop) {                             for(var i = 1; i &lt; item.length; i++) {                                 if(item[i].name.pop) {                                     status = isActive(item[i].name, activePage, status);                                 } else if(item[i].name === activePage) {                                     return true;                                 }                             }                         } else if(item === activePage) {                             return true;                         }                         return status;                     } \/\/ \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u043f\u043e \u043a\u043b\u0438\u043a\u043a\u0443 \u0438\u043b\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u043c\u044b\u0448\u0438 (\u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442.\u043a. \u0443\u0447\u0442\u0435\u043d\u044b \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430)                     scope.expandMenu = function ($event) {                         var clickedElem = $($event.currentTarget),                             parentClicked = $($event.currentTarget.parentElement),                             expanded = clickedElem.attr('aria-expanded'),                             isOpened = parentClicked.hasClass('open'),                             attrExpanded = (expanded === 'false'),                             allOpenedMenu = parentClicked.parent().find('.open'),                             smallWindow = window.innerWidth &lt; 768,                             eventMouseEnter = $event.type === 'mouseenter',                             subMenuAll = elem.find('.dropdown-submenu');                         if(!smallWindow || !eventMouseEnter) {                             allOpenedMenu.removeClass('open');                             clickedElem.attr('aria-expanded', attrExpanded);                             if(isOpened && !eventMouseEnter) {                                 parentClicked.removeClass('open');                             } else {                                 parentClicked.addClass('open');                                 openedMenu = clickedElem; \/\/**                             }                         }                         subMenuAll.removeClass('dropdown-submenu-small dropdown-submenu-big');                         if(smallWindow) {                             subMenuAll.addClass('dropdown-submenu-small');                         } else {                             subMenuAll.addClass('dropdown-submenu-big');                         }                         stopBubleAndPropagation($event);                     }; \/\/ \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0434\u043c\u0435\u043d\u044e \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043d\u0430 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0439 \u043f\u0443\u043d\u043a\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043c\u0435\u043d\u044e                     scope.closeOnMoveMenu = function () {                         var smallWindow = window.innerWidth &lt; 768;                         if(openedMenu && !smallWindow) {                             var clickedLink = openedMenu,                                 clickedElement = clickedLink.parent();                             clickedElement.removeClass('open');                             clickedLink.attr('aria-expanded', false);                             openedMenu = null;                         }                     }; \/\/ \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043f\u043e\u0434\u043c\u0435\u043d\u044e (\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 92 \u0441\u0442\u0440\u043e\u043a\u0438)                     scope.expandSubMenu = function ($event) {                         var elemClicked = $($event.currentTarget.parentElement),                             smallWindow = window.innerWidth &lt; 768,                             eMouseEnter = $event.type === 'mouseenter',                             sameElement = elemClicked.hasClass('open');                         if(!smallWindow || !eMouseEnter) { \/\/ \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c                             if(!sameElement && !eMouseEnter || !eMouseEnter || !sameElement) {                                 elemClicked.parent().find('.open').removeClass('open');                             }                             if(!sameElement) {                                 elemClicked.addClass('open');                                 openedSubMenu = elemClicked;                             }                         }                         stopBubleAndPropagation($event);                     }; \/\/ \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0434\u043c\u0435\u043d\u044e \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043d\u0430 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442 \u0432 \u043f\u043e\u0434\u043c\u0435\u043d\u044e (\u0437\u0432\u0443\u0447\u0438\u0442 \u0442\u043e \u043a\u0430\u043a:))                     scope.closeOnMoveSubMenu = function ($event) {                         var smallWindow = window.innerWidth &lt; 768;                         if(openedSubMenu && !smallWindow) {                             var clickedElement = openedSubMenu,                                 savedList = clickedElement.parent(),                                 currentList = $($event.target).parent().parent();                             if(savedList[0] === currentList[0]) {                                 clickedElement.removeClass('open');                                 openedSubMenu = null;                             }                         }                     };                     scope.closeMenu = closeMenu; \/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438 \u0435\u0433\u043e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u0438                     var $body = $document.find('html');                     elem.bind('$destroy', function() {                         $body.unbind();  \/\/\u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442                     }); \/\/ \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u0432\u043d\u0435 \u043c\u0435\u043d\u044e - \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438                     $body.bind('click', closeMenu);                     function closeMenu ($event) {                         var elemClicked = $event.relatedTarget || $event.target;                         if(isClickOutNavbar(elemClicked)) {                             closeAllMenu();                         }                     } \/\/ \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0431\u044b\u043b \u043a\u043b\u0438\u043a \u043f\u043e \u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u043d\u0435\u0442                     function isClickOutNavbar(elem) {                         if($(elem).hasClass('dropdown-firstLevel')) {                             return false;                         }                         if(elem.parentElement !== null) {                             return isClickOutNavbar(elem.parentElement);                         } else {                             return true;                         }                     } \/\/ \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u0443\u043d\u043a\u0442\u044b \u0438 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u044b \u043c\u0435\u043d\u044e                     function closeAllMenu() {                         elem.find('.open').removeClass('open');                         elem.find('[aria-expanded=true]').attr('aria-expanded', false);                     } \/\/ \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043f\u043e\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439                     function stopBubleAndPropagation($event) {                         $event.stopPropagation();                         $event.preventDefault();                     }                 }             };         }); })(); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0421\u0440\u0430\u0437\u0443 \u043e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u044f \u043d\u0435 \u0433\u043e\u0440\u0436\u0443\u0441\u044c \u043a\u043e\u0434\u043e\u043c, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0435. \u041e\u043d \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430, \u0442.\u043a. \u0442\u0443\u0442 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u043f\u0438\u0441\u0430\u043d \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f\/\u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0438\u0434\u0430 \u043f\u0443\u043d\u043a\u0442\u0430. \u0411\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0435\u0441\u0443\u0442 \u0434\u0432\u0435 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043b\u0438\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0432\u043d\u0435 \u043c\u0435\u043d\u044e (\u0441\u0442\u0440\u043e\u043a\u0430 181) \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c (\u0441\u0442\u0440\u043e\u043a\u0430 70).<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <u>\u041e\u0442\u043c\u0435\u0447\u0443, \u0447\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441 \u043c\u043e\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f:<\/u>  <\/p>\n<ol>\n<li> \u0414\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u0438\u043c\u0435\u0435\u0442 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u043e\u0443\u043f, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b <i>name<\/i> \u0438 <i>sref<\/i> \u0447\u0435\u0440\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u0422.\u0435. \u0432 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0448\u0430\u043d\u0441 \u043d\u0430\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li> \u0421\u043b\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (\u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430) \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u044b \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0431 \u0438\u0445 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0425\u043e\u0440\u043e\u0448\u0438\u043c \u0442\u043e\u043d\u043e\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0432 \u0432\u0438\u0434\u0435 <a href=\"https:\/\/learn.javascript.ru\/variable-names\">\u0432\u0435\u0440\u0431\u043b\u044e\u0436\u044c\u0435\u0439 \u043d\u043e\u0442\u0430\u0446\u0438\u0438<\/a>. \u0422\u0430\u043a\u0436\u0435, \u0435\u0441\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0438\u0434\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u0440\u044f\u0434, \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c var, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e, \u0430 \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u043d\u0438\u0445 \u0441 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u042d\u0442\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430.  <\/li>\n<\/ol>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <u>\u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e:<\/u>  <\/p>\n<ol>\n<li> \u041a\u043e\u0434 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u0439, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435. \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e: \u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0441\u0438\u043c, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438 \u0435\u0441\u043b\u0438 \u0432\u043e \u0444\u0440\u0430\u0437\u0435 \u043f\u0440\u043e\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u0435\u0442 \u0431\u0443\u043a\u0432\u0430 \u00ab\u0418\u00bb, \u0437\u043d\u0430\u0447\u0438\u0442, \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0443\u044e.<\/li>\n<li> \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441\u0430\u043c \u0437\u0430 \u0441\u0435\u0431\u044f, \u0447\u0442\u043e \u043e\u043d \u0434\u0435\u043b\u0430\u0435\u0442. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043b\u0438\u0431\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043b\u0438\u0431\u043e \u0442\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043a\u043e\u0434\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0412\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e, \u0442.\u043a. \u0447\u0442\u043e \u0442\u043e \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0412\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0438\u043b\u043e.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0449\u0435 \u0432\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432 \u0441\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u0430.<\/li>\n<\/ol>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>\u0424\u0430\u0439\u043b navbar.provider.js<\/b><\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0418\u0442\u0430\u043a, \u043d\u0430\u0448\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e? \u041c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0435, \u043d\u043e \u044d\u0442\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043b\u0435\u0437\u0442\u044c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b, \u0438\u0441\u043a\u0430\u0442\u044c \u0432 \u043d\u0435\u043c \u043d\u0443\u0436\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0439. \u0410 \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043f\u0443\u043d\u043a\u0442\u0430 \u0432 \u043c\u0435\u043d\u044e, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443. <br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u0435\u043d \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043e\u0437\u043b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u044e\u0430\u043d\u0441. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u043e\u0432\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<ol>\n<li> \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u0430 (module),<\/li>\n<li> \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 (provider),<\/li>\n<li> \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0435\u043a\u0446\u0438\u0438 config (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f),<\/li>\n<li> \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f factory, service, value, constant,<\/li>\n<li> \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0435\u043a\u0446\u0438\u0438 run (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f),<\/li>\n<li> \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432.<\/li>\n<\/ol>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u043d\u0430\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0441\u0435\u043a\u0446\u0438\u044f <i>config<\/i>, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e <i>provider<\/i>. \u041a \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432 \u0435\u0433\u043e \u0438\u043c\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u041d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u0438 \u0441 \u0434\u043e\u0431\u0430\u0432\u043a\u043e\u0439 \u00ab<i>Provider<\/i>\u00bb, \u0442.\u0435., \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0438\u043c\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 <i>navbarList<\/i> \u2014 \u0442\u043e \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c <i>navbarListProvider<\/i>.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0438\u0436\u0435:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c navbar.provider.js<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">'use strict';  (function () {     angular.module('navbar')         .provider('navbarList', function () {             var list = []; \/\/ \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 \u0432 \u043c\u0435\u043d\u044e             this.add = function (obj) { \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430                 if(obj.location) {                     if(obj.location.place.length !== obj.location.priority.length ||                         !obj.location.place.pop || !obj.location.priority.pop) {                         console.log('Warning! Bad location params for menu &quot;' + obj.name + '&quot;. Skip item');                         return;                     }                 } \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0443\u043d\u043a\u0442\u0430 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043c\u0435\u043d\u044e \u043f\u0440\u0438 \u043e\u0442\u0441\u0442\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f                 if(!obj.location) {                     var name = obj.name;                     for(var i = 0; i &lt; list.length; i++) { \/\/ \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0438 \u0443\u0442\u0438\u043d\u0443\u044e \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044e                         var currentName = (list[i].name.pop) ? list[i].name[0] : list[i].name;                         if(currentName === name) {                             console.log('Warning! Duplicate menu &quot;' + name + '&quot;. Skip item');                             return;                         }                     }                     list.push(obj);                     list.sort(sortByPriority);                     return;                 } \/\/ \u043f\u043e\u0438\u0441\u043a \u043f\u0443\u043d\u043a\u0442\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e                 var place = obj.location.place.shift(),                     priority = obj.location.priority.shift();                 for(i = 0; i &lt; list.length; i++) { \/\/ \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u0447\u0442\u043e i \u0431\u043b\u043e\u0447\u043d\u0430\u044f \u043d\u0435 \u0432 JS                     var currentSubName = (list[i].name.pop) ? list[i].name[0] : null;                     if(place === currentSubName) {                         list[i].name = changeExistPart(obj, list[i].name);                         if(priority !== list[i].priority) {                             console.log('Warning! Priority of menu &quot;' + list[i].name + '&quot; has been changed from &quot;' +                                 list[i].priority + '&quot; to &quot;' + priority + '&quot;');                             list[i].priority = priority;                             list.sort(sortByPriority);                         }                         return;                     }                     currentName = list[i].name;                     if(place === currentName) {                         console.log('Warning! Duplicate submenu &quot;' + place + '&quot;. Skip item');                         return;                     }                 } \/\/ \u043d\u0438 \u043e\u0434\u043d\u043e \u0432\u044b\u0448\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u043b\u043e, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438                 list.push( {                     name: [place, makeOriginalPart(obj)],                     priority: priority                 } );                 list.sort(sortByPriority);             }; \/\/ \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043c\u0435\u0441\u0442\u0430 \u0432 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u0430\u0445 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430             function changeExistPart(obj, list) {                 var place = obj.location.place.shift(),                     priority = obj.location.priority.shift(), \/\/  \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442                     searchName = (place) ? place : obj.name;                 for(var i = 1; i &lt; list.length; i++) {                     var currentName = (list[i].name.pop) ? list[i].name[0] : list[i].name;                     if(searchName === currentName) {                         if(!list[i].name.pop || (!place && list[i].name.pop) ) {                             console.log('Warning! Duplicate menu &quot;' + searchName + '&quot;. Skip item');                             return list;                         } else {                             list[i].name = changeExistPart(obj, list[i].name);                             if(priority !== list[i].priority) {                                 console.log('Warning! Priority of menu &quot;' + list[i].name +                                     '&quot; has been changed from &quot;' + list[i].priority + '&quot; to &quot;' + priority + '&quot;');                                 list[i].priority = priority;                                 list.sort(sortByPriority);                             }                             return list;                         }                     }                 }                 if(!place) {                     delete obj.location;                     list.push(obj);                 } else {                     list.push({                         name: [place, makeOriginalPart(obj)],                         priority: priority                     });                 }                 list.sort(sortByPriority);                 return list;             } \/\/ \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439, \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e \u0441 \u043f\u043e\u0434\u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438             function makeOriginalPart (obj) {                 var place = obj.location.place.shift(),                     priority = obj.location.priority.shift();                 if(place) {                     var menu = {                         priority: priority,                         name: [place, makeOriginalPart(obj)]                     };                 } else {                     delete obj.location;                     menu = obj;                 }                 return menu;             } \/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u043f\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0443             function sortByPriority(a, b) {                 return a.priority - b.priority;             } \/\/ \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 angularJS             this.$get = function () {                 return {                     list: list,                     add: this.add                 };             };         }); })(); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>$get<\/i> \u2014 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 \u0432 \u043c\u0435\u043d\u044e <i>add<\/i> \u0438 \u0441\u0430\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u043d\u044e <i>list<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 <a href=\"https:\/\/learn.javascript.ru\/closures\">\u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0438<\/a>.<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0424\u0443\u043d\u043a\u0446\u0438\u044f <b>add<\/b> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438:<\/p>\n<ol>\n<li> <i>priority<\/i> \u2014 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a,<\/li>\n<li> <i>permission<\/i> \u2014 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043e\u0434\u043d\u043e \u0438\u0437 \u0434\u0432\u0443\u0445 \u043f\u043e\u043b\u0435\u0439:<br \/> \n<ul>\n<li> <i>except<\/i> \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043d\u044b\u0445 \u0440\u043e\u043b\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f,<\/li>\n<li> <i>only<\/i> \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u0440\u043e\u043b\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f,<\/li>\n<\/ul>\n<\/li>\n<li> <i>location<\/i> \u2014 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0434\u0432\u0430 \u043f\u043e\u043b\u044f:<br \/> \n<ul>\n<li> <i>place<\/i> \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043c\u0435\u043d, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u043d\u044e,<\/li>\n<li> <i>priority<\/i> \u2014 \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0434\u043b\u0438\u043d\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e,<\/li>\n<\/ul>\n<\/li>\n<li> <i>name<\/i> \u2014 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u0438\u043c\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430.<\/li>\n<\/ol>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>add<\/i> \u043f\u0440\u043e\u0441\u0442. \u0421\u043f\u0435\u0440\u0432\u0430 \u0438\u0434\u0435\u0442 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0433\u043e \u043d\u0430 \u0432\u0445\u043e\u0434 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0437\u0430\u0442\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u043c\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430. \u0415\u0441\u043b\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0441 \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u2014 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <i>makeOriginalPart()<\/i>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043c\u0435\u043d\u044e; \u0435\u0441\u043b\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u2014 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <i>changeExistPart()<\/i>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0438\u0434\u0435\u0442 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <i>place<\/i>.<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043c\u0435\u043d\u044e \u043f\u043e \u043f\u043e\u043b\u044e <i>priority<\/i>.<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <i>else if<\/i>. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0441\u044f <i>return<\/i>. \u042f \u0441\u0447\u0438\u0442\u0430\u044e, \u0434\u0430\u043d\u043d\u044b\u0439 \u0448\u0430\u0433 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u043d\u044b\u043c, \u0442.\u043a. \u043e\u043d \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430. \u0412\u043e\u043e\u0431\u0449\u0435 \u043a\u043e\u0434 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043d\u0435\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f. \u041a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043d\u0438\u0436\u0435 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u044f\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u041a\u043e\u0434 \u043d\u0435 \u0434\u043b\u044f \u0441\u043b\u0430\u0431\u043e\u043d\u0435\u0440\u0432\u043d\u044b\u0445.<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">'use strict';  (function () {     angular.module('navbar')         .provider('navbarList', function () {             var list = [];             this.add = addMenu;              function addMenu(obj, nestedMenu, currentList) {                 if(currentList) {                     list = currentList;                 } else if(list.length &lt; 1) {                     list.push(makeOriginalPart(obj));                     return;                 }                 if(!obj.location || !obj.location.place) { \/\/ \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0434\u043b\u0438\u043d\u0443 place==priority                     isDuplicate(obj.name, list);                     list.push(obj);                     list.sort(sortByPriority);                     return;                 } else if(obj.location.place.length &gt; 0){                     var searchName = obj.location.place.shift(),                         priority = (obj.location.priority) ? obj.location.priority.shift() : null;                      for(var i = (nestedMenu) ? 1 : 0; i &lt; list.length; i++) {                         var currentName = (list[i].name.pop) ? list[i].name[0] :list[i].name;                         if(currentName === searchName) {                             if(list[i].name.pop) { \/\/ \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043f\u0435\u0440\u043c\u0438\u0448\u043d                                 if(!nestedMenu) {                                     nestedMenu = [list];                                 }                                 var sublistName = list[i].name.shift();                                 list[i].name.sort(sortByPriority);                                 list[i].name.unshift(sublistName);                                 list[i].name.priority = priority; \/\/ \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443                                 nestedMenu.push(list[i].name);                                  addMenu(obj, nestedMenu, list[i].name);                                 return;                             } else {                                 console.log('Warning! Duplicate menu', currentName);                             }                         }                     }                     if(nestedMenu) {                         var last = nestedMenu.length - 1;                         nestedMenu[last].push({                             name: [searchName, makeOriginalPart(obj, null, nestedMenu[last]) ],                             priority: priority                         });                     }                 } else {                     last = nestedMenu.length - 1;                     nestedMenu[last].push(makeOriginalPart(obj, null, nestedMenu[last]));                 }                 if(nestedMenu) { \/\/ changeExistPart \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043d\u0434\u0435\u0444\u0430\u0439\u043d\u0435\u0434 \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435                     nestedMenu[nestedMenu.length - 1].sort(sortByPriority);                     list = changeExistPart(nestedMenu);                 } else {                     if(priority) { \/\/ \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0434\u043b\u0438\u043d\u0443 place==priority                         obj.location.priority.unshift(priority);                     }                     obj.location.place.unshift(searchName);                      list.push(makeOriginalPart(obj, null, list));                     list.sort(sortByPriority);                 }             }              function changeExistPart(nestedMenu) {                 if(nestedMenu.length &gt; 1) {                     var subList = nestedMenu.pop(),                         priority = subList.priority,                         searchName = subList[0],                         last = nestedMenu.length - 1;                      for(var i = 1; i &lt; nestedMenu[last].length; i++) {                         var currentName = (nestedMenu[last][i].name.pop) ? nestedMenu[last][i].name[0] : '';                         if(searchName === currentName){                             nestedMenu[last][i].name = subList;                             nestedMenu[last][i].priority = priority;                              return changeExistPart(nestedMenu);                         }                     }                     return changeExistPart(nestedMenu); \/\/ \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435. \u042d\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430                 } else {                     return nestedMenu[0];                 }             }              function makeOriginalPart(obj, menu, currentList){                 if(!menu) {                     isDuplicate(obj.name, currentList);                     menu = {                         name: obj.name,                         priority: obj.priority,                         state: obj.state,                         permissions: obj.permissions                     };                 }                 if(obj.location.place.length &gt; 0) {                     var currentLocation = obj.location.place.pop(),                         priority = (obj.location.priority) ? obj.location.priority.pop() : null,                         currentMenu = {                             priority: priority,                             name: [currentLocation, menu]                         };                     return makeOriginalPart(obj, currentMenu);                 } else {                     return menu;                 }             }              function isDuplicate(name, list) {                 if(!list || list.length &lt; 1) {                     return;                 }                  for(var i = (list[0].name) ? 0 : 1; i &lt; list.length; i++) {                     var currentName = (list[i].name.pop) ? list[i].name[0] : list[i].name;                     if(currentName === name) {                         console.log('Warning! Duplicate menu', currentName);                     }                 }             }              function sortByPriority(a, b) {                 return a.priority - b.priority;             }              this.$get = function () {                 return {                     list: list,                     add: this.add                 };             };         }); })(); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>\u0424\u0430\u0439\u043b navbar.permission.js<\/b>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c navbar.permission.js<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">'use strict';  (function () {     angular.module('navbar')         .factory('navPermission', function (Permission, $q) { \/\/ \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435 \u0440\u043e\u043b\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u043c\u0438\u0441\u0430             function getUser(params) {                 var users = Permission.roleValidations,                     names = Object.keys(users),                     promisesArr = [];                 for(var i = 0; i &lt; names.length; i++) {                     var current = names[i],                         validUser = $q.when( users[current](params) );                     promisesArr.push(validUser);                 }                 return $q.all(promisesArr).then(function (users) {                    for(var i = 0; i &lt; users.length; i++) {                        if(users[i]) {                            return names[i];                        }                    }                     return null;                 });             } \/\/ \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0448\u0435\u043b \u043f\u0440\u043e\u043c\u0438\u0441, \u0436\u0434\u0435\u043c \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0435\u043d\u044e, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c - \u0441\u0440\u0430\u0437\u0443 \u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0435\u043d\u044e             function acceptPermission (list, username) {                 if(!username.then) {                     return changeList(list, username);                 } else {                     return username.then(function (username) {                         return changeList(list, username);                     });                 }             } \/\/ \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u043c\u0435\u043d\u044e \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u043f\u0443\u043d\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u043e\u043b\u0438             function changeList(list, username) {                 for(var i = (list[0].name) ? 0 : 1; i &lt; list.length; i++) {                     if(list[i].permissions) {                         if(list[i].permissions.except) {                             var except = list[i].permissions.except;                             for(var j = 0; j &lt; except.length; j++) {                                 if(except[j] === username) {                                     list.splice(i--, 1);                                 }                             }                         } else if(list[i].permissions.only) {                             var only = list[i].permissions.only,                                 accessDenided = true;                             for(j = 0; j &lt; only.length; j++) {                                 if(only[j] === username) {                                     accessDenided = false;                                 }                             }                             if(accessDenided) {                                 list.splice(i--, 1);                             }                         }                     } else if(list[i].name.pop) {                         list[i].name = changeList( list[i].name, username);                         if(list[i].name.length === 1 ) {                             list.splice(i--, 1);                         }                     }                 }                 return list;             } \/\/ \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0444\u0430\u0431\u0440\u0438\u043a\u0438             return {                 getUser: getUser,                 acceptPermission: acceptPermission             };         }); })(); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0421\u043a\u0440\u0438\u043f\u0442 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u043d\u044e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u0435\u043c angular-permission. \u041a\u043e\u0434 \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0430\u0431\u0440\u0438\u043a\u0443 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0441\u0442\u0438 \u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u043d\u0435 \u0432\u0441\u0435\u043c \u043d\u0443\u0436\u0435\u043d \u0434\u0430\u043d\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b).<br \/>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0424\u0430\u0431\u0440\u0438\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432:<\/p>\n<ol>\n<li> <i>acceptPermission<\/i> \u2014 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043d\u044b\u0435.<\/li>\n<li> <i>getUser<\/i> \u2014 \u043c\u0435\u0442\u043e\u0434 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u043e\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u043d\u043e \u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c <a href=\"http:\/\/habrahabr.ru\/post\/189084\/\">\u043f\u0440\u043e\u043c\u0438\u0441\u043e\u0432<\/a>.<\/li>\n<\/ol>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>\u0424\u0430\u0439\u043b navbar.decorator.js<\/b><\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u041f\u043e \u0441\u0443\u0442\u0438, \u0432\u0441\u0435 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0435 \u043c\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u00ab<i>\u043f\u0435\u0440\u0441\u0438\u0434\u0441\u043a\u0430\u044f \u043a\u043e\u0448\u043a\u0430<\/i>\u00bb \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u043f\u043e\u0434\u043c\u0435\u043d\u044e \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u043f\u043e\u0434\u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u00ab<i>\u0436\u0438\u0432\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0430<\/i>\u00bb =&gt; \u00ab<i>\u043c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0435<\/i>\u00bb =&gt; \u00ab<i>\u043a\u043e\u0448\u043a\u0438<\/i>\u00bb. \u041f\u0443\u043d\u043a\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432\u0441\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u043a\u0440\u043e\u043c\u0435 \u00ab<i>anonymous<\/i>\u00bb \u0438 \u00ab<i>banned<\/i>\u00bb.<\/p>\n<pre><code class=\"javascript\">.config(function ($stateProvider, navbarListProvider) { \/\/ \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435     $stateProvider         .state('persianCat', {             url: '\/\u043f\u0435\u0440\u0441\u0438\u0434\u0441\u043a\u0430\u044f \u043a\u043e\u0448\u043a\u0430',             templateUrl: 'app\/cats\/persianCat.html',             controller: 'persianCatCtrl', \t\tpermissions: {  \t\t   except: ['anonymous', 'banned'],   \t\t   redirectTo: 'login'   \t\t}         }); \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0443\u043d\u043a\u0442 \u0432 \u043c\u0435\u043d\u044e \tnavbarListProvider.add({  \t\t state: 'persianCat',  \t\t name: '\u043f\u0435\u0440\u0441\u0438\u0434\u0441\u043a\u0430\u044f \u043a\u043e\u0448\u043a\u0430',  \t\t permissions: {  \t\t   except: ['anonymous', 'banned']   \t\t },  \t\t priority: 20,  \t\t location: {   \t\t   place: ['\u0436\u0438\u0432\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0430', '\u043c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0435', '\u043a\u043e\u0448\u043a\u0438'],  \t\t   priority: [10, 10, 10]  \t \t } \t}); }); <\/code><\/pre>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u043e, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c \u2014 \u043d\u0435\u043a\u0440\u0430\u0441\u0438\u0432\u043e? \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0434\u043b\u044f \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0435\u0434\u0438\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <i>\u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u043c<\/i>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044f <i>UI-router<\/i>. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043e\u0431\u0435\u0440\u0442\u043a\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043a\u043e\u0434 \u0434\u0435\u043a\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u00ab<i>.state<\/i>\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435 <i>menu<\/i> \u0438\u0437 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0432 state \u043e\u0431\u044a\u0435\u043a\u0442\u0430:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c navbar.decorator.js<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"javascript\">'use strict';  (function() {     angular.module('navbar')         .config(function ($stateProvider, navbarListProvider) { \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043c\u0435\u0442\u043e\u0434 state \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e             $stateProvider.decorator('state', function (obj) {                 var menu = obj.menu,                     permissions = (obj.data) ? obj.data.permissions : null; \/\/ \u0435\u0441\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u0442\u0435\u0439\u0442\u0430 \u0432 \u043c\u0435\u043d\u044e - \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c                 if(!menu) {                     return;                 }                 menu.state = obj.name; \/\/ \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0443\u043d\u043a\u0442\u0430 \u043f\u0440\u0438 \u0438\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u0438                 if(permissions) {                     menu.permissions = {};                     if(permissions.except) {                         menu.permissions.except = permissions.except;                     } else if(permissions.only) {                         menu.permissions.only = permissions.only;                     } else {                         delete menu.permissions;                     }                 } \/\/ \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u043f\u043e \u0441\u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 menu                 navbarListProvider.add(menu);             });         }); })(); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439 \u0432 \u043c\u0435\u043d\u044e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"javascript\">.config(function ($stateProvider) {      $stateProvider         .state('persianCat', {             url: '\/\u043f\u0435\u0440\u0441\u0438\u0434\u0441\u043a\u0430\u044f \u043a\u043e\u0448\u043a\u0430',             templateUrl: 'app\/cats\/persianCat.html',             controller: 'persianCatCtrl', \t\tpermissions: {  \t\t   except: ['anonymous', 'banned'],   \t\t   redirectTo: 'login'   \t\t}, \t\tmenu: {    \t\t   name: '\u043f\u0435\u0440\u0441\u0438\u0434\u0441\u043a\u0430\u044f \u043a\u043e\u0448\u043a\u0430',    \t  \t   priority: 20,   \t\t   location: {    \t\t      place: ['\u0436\u0438\u0432\u044b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0430', '\u043c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0435', '\u043a\u043e\u0448\u043a\u0438'],  \t\t   \tpriority: [10, 10, 10]    \t\t  } \t\t}         }); \t}); <\/code><\/pre>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c \u2014 \u0431\u043e\u043b\u0435\u0435 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e.<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043b\u0430\u0439\u0444\u0445\u0430\u043a: \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <i>\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443<\/i>, \u043d\u043e \u0438 <i>\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u043e\u0432\u0441\u043a\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c<\/i>, \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u042d\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442 \u0412\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438\/\u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c.<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i>\u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0432\u0441\u0435\u043c \u0443\u0434\u0430\u0447\u0438.<\/i>             <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/259347\/\"> http:\/\/habrahabr.ru\/post\/259347\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u0434 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0440\u0443\u0447\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e, \u0442.\u043a. \u0435\u0433\u043e \u0443\u0436\u0435 \u043e\u0442\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u043b\u0435\u043d\u0438\u0432\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u043e \u043c\u043d\u043e\u0439 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0437\u0430\u0434\u0430\u0447\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434, \u0430 \u043d\u0430\u0439\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041a \u043c\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e, \u043d\u0438 \u043d\u0430 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445, \u043d\u0438 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043f\u043e\u0434 \u043c\u043e\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0430\u043d\u0433\u0443\u043b\u044f\u0440\u0430 \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0438\u043c \u0441 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <u>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044e, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435:<\/u>  <\/p>\n<ol>\n<li> \u0412\u0441\u044f \u043d\u0430\u0447\u0438\u043d\u043a\u0430 \u043c\u0435\u043d\u044e \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u0430 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b. \u041f\u0440\u0438 \u0432\u0435\u0440\u0441\u0442\u043a\u0435 html \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c DOM-\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439, \u0447\u0442\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430.<\/li>\n<li> \u0423 \u043c\u0435\u043d\u044e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442\u044b \u0441 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439.<\/li>\n<li> \u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432 \u043c\u0435\u043d\u044e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u043d\u043e \u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/li>\n<li> \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/li>\n<li> \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\/\u0441\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/li>\n<\/ol>\n<p>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/EugeneSnihovsky\/angular-navbar\">\u0442\u0443\u0442<\/a><\/b>.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-258492","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/258492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=258492"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/258492\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=258492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=258492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=258492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}