рдЕрддрд┐рд░рд┐рдХреНрдд $ watch'ers рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд░рд╣рд╛ рд╣реИ

рдореИрдВ $ $ рдкрдЪрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ $ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ () рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдЯрд┐рдкреНрдкрдгреА рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдХреНрд╕рд░ рдкреГрд╖реНрда рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдореЙрдбрд▓ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдБрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрд┐ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<h1 ng-bind="l10n.main_title"></h1> 

 <a ng-href="/edit/{{user.id}}" ng-bind="user.name"></a> 

рдпреЗ рдФрд░ рдЕрдиреНрдп рдорд╛рдирдХ рдирд┐рд░реНрджреЗрд╢ рдХреГрдкрдпрд╛ рдЬрд╛рдБрдЪреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд╣рд░ $ рдкрдЪрдиреЗ рдХреЗ рд╕рд╛рде рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд░рд▓ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рда рдХреЗ рд▓рд┐рдП:

 app.directive("staticText", function() { return { restrict: "A" link: function(scope, element, attrs) { element.text(scope.$eval(attrs.customText)); } }; }) 

 <h1 static-text="l10n.main_title"></h1> 

рдкрд░рд┐рдгрд╛рдо рд╢реВрдиреНрдп рд╕реЗ рдПрдХ $ рдШрдбрд╝реА рд╣реИред
рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, GitHub рдкрд░ рджреЛ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ:

рдкрд╣рд▓рд╛ ($ рд╡реЙрдЪ рдлрд╛рдЗрдЯрд░реНрд╕) рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рджреВрд╕рд░рд╛ (рдмрд┐рдВрдбреЛрдВрд╕реЗ) рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рдПрдХ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВ)ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 <div bindonce="User"> <h1 bo-text="User.name"></h1> </div> 

рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд╕реНрдерд╛рдпреА $ рдШрдбрд╝реА рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЬрдм рдЗрд╕рдореЗрдВ рдкрд╛рд░рд┐рдд рдЪрд░ рдХрд╛ рдорд╛рди рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рдиреЗрд╕реНрдЯреЗрдб рдмреЛ- * рдирд┐рд░реНрджреЗрд╢ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЕрд╕реНрдерд╛рдпреА $ рдШрдбрд╝реА рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИред
Bindonce рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рдЖрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреЗрдЬ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рдлреА рд╡рд┐рд╕реНрддреГрдд рд░реАрдбрдореА рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рд╡рд╣ рдлрд╝рдВрдХреНрд╢рди рджреВрдВрдЧрд╛ рдЬреЛ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдорд┐рд▓рд╛ рдерд╛ ред рдпрд╣ рдкреНрд░рддрд┐ рдкреГрд╖реНрда рд▓рдЧрднрдЧ $ watch'ers рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред

 (function () { var root = $(document.getElementsByTagName('body')); var watchers = []; var f = function (element) { if (element.data().hasOwnProperty('$scope')) { angular.forEach(element.data().$scope.$$watchers, function (watcher) { watchers.push(watcher); }); } angular.forEach(element.children(), function (childElement) { f($(childElement)); }); }; f(root); console.log(watchers.length); })(); 

рд╣рд┐рддреЛрдВ рдХреА рдЦрд╛рддрд┐рд░, рдЖрдк рд╢реВрдиреНрдп-рдШрдбрд╝реА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд░рд╛рд╢рд┐ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреНрд╖реЗрддреНрд░ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рдХрд╛рдо рдЖрдПрдЧрд╛ред рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж

Source: https://habr.com/ru/post/In208768/


All Articles