рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдХреНрд╖рдг рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрд╡реЗрджрди рдЕрдВрдд рдореЗрдВ рдзреАрдорд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:
рдмрд╛рдЗрдВрдбреЛрдиреНрд╕ , рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╕реВрдЪрд┐рдпреЛрдВ, $ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЗ рдмрдЬрд╛рдп $ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдПрдирдЬреА-рд╢реЛ рдХреЗ рдмрдЬрд╛рдп рдПрдирдЬреА-рдЕрдЧрд░ (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд), рдФрд░
рдЕрдиреНрдп ред рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдорджрдж рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ: $ рд░реВрдЯрд╕реНрдХреЙрдк рдХреЙрд▓ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ред $ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рд╡рд╛рд╕реНрддреБ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдПрдХ рдЖрд╡реЗрджрди рдХреЛ рдХрдИ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдЬреЛ рдХрд┐ рдЙрдирдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдХреЛрдгреАрдп рдореЗрдВ
рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдорддреМрд░ рдкрд░ рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдПрдирдЬреА рдРрдк рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рд╣реИред рдпрд╣ рдЗрд╕ рддрддреНрд╡ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмрд╛рдВрдзрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдРрд╕рд╛ рддрддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдкреНрд░рд▓реЗрдЦрди рдХреБрдЫ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
angular.bootstrap(element, [/*Module*/]);
рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓, рдЙрд╕рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛, рд╕рд╛рде рд╣реА рдПрдирдЬреА рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЙрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЗрд╕реЗ рдПрдХ рдкреГрдердХ рдореЙрдбреНрдпреВрд▓ рдХрд╣рддреЗ рд╣реИрдВ) рдХрд╛ рдЕрдкрдирд╛ $ рдЗрдВрдЬреЗрдХреНрдЯрд░, $ рд░реВрдЯрд╕реНрдХреЙрдк, $ рд╕рдВрдХрд▓рди, рдЖрджрд┐ рд╣реЛрдЧрд╛ред - рдкреВрд░реЗ рдЖрдВрддрд░рд┐рдХ рдХреЛрдгреАрдп рд░рд╕реЛрдИ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореВрд▓ рдкреГрдердХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдиреЗрд╕реНрдЯреЗрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдЧрд╛, рдИрд╡реЗрдВрдЯ (рдПрдорд┐рдЯ рдФрд░ рдкреНрд░рд╕рд╛рд░рдг) рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рд╕реЗ рдирд╣реАрдВ рдЧреБрдЬрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рдкреГрдердХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ $ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рджреВрд╕рд░реЗ рдореЗрдВ рд▓реАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред
рдирдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
directive('newApp', function () { return{ restrict: 'EA', transclude: true, scope: { module: '=' }, link: function (scope, element, attr, ctrl, transclude) { var div = document.createElement('app'); var module = angular.module(scope.$id, [scope.module]).run(['$rootScope', function ($rootScope) { scope.$on('$destroy', function() { $rootScope.$destroy(); angular.module(scope.$id, []); }); transclude($rootScope, function (el) { angular.element(div).append(el); element.append(div); }); }]); angular.bootstrap(div, [scope.$id]); } }; });
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
<body ng-app="App"> <new-app module=" 'SomeModule' "> <some-module-directive/> </new-app> </body>
рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдзреАрдорд╛ рд╕рдВрд╕реНрдХрд░рдг рдФрд░
рддреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг ред
рд╣рдореЗрдВ рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдирдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджреЗрд╢рди рдореЗрдВ $ рдирд╖реНрдЯ рдШрдЯрдирд╛ рд╣реИрдВрдбрд▓рд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╡рд╣ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдкреГрдердХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рднреЗрдЬрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реЛ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдирд┐рд░реНрджреЗрд╢, рдирд┐рдпрдВрддреНрд░рдХ рдЖрджрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдореГрддрд┐ рдЕрднреА рднреА рд▓реАрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, angular.element.cache рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рдХреИрд╢ рдХреЗ рдХрд╛рд░рдг рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред ред рдпрд╣ рдореБрджреНрджрд╛ рдПрдХ рдЕрд▓рдЧ рдЕрдзреНрдпрдпрди рдФрд░ рд▓реЗрдЦ рдХрд╛ рд╣рдХрджрд╛рд░ рд╣реИред
рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ $ рд╕реНрдерд╛рди рд╕реЗрд╡рд╛ рд╣реИред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣ рдкреГрд╖реНрда рдХреЗ рдкрддреЗ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдмрджрд▓рддреЗ рд╕рдордп, рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрд╢рд╛рд░реЗ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ngView рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, $ рд╕реНрдерд╛рди рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ, рдпреВрдЖрд░рдПрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╣реИрдВрдбрд▓рд░, рдЬреЛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдм рддрдХ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рд╣реВрдБ:
.config(function ($locationProvider) { $locationProvider.$get = function () { return angular.element(document).injector().get('$location'); }; })
рдЕрдм рдореИрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рд╕рдореБрджрд╛рдп рдХреА рд░рд╛рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реВрдВред