рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдирд┐рд░реНрджреЗрд╢ред рднрд╛рдЧ реи

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдирд┐рд░реНрджреЗрд╢ рдПрдВрдЧреБрд▓рд░рдЬ рдХреА рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдХрд╛ рдореБрдЦреНрдп рдЖрдХрд░реНрд╖рдг рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд Angularjs рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ : "рдХреГрдкрдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ, рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд▓рдн рдФрд░ рд╕рдВрд░рдЪрд┐рдд рдХрд░реЗрдВред рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ Angularjs рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рд╣реИ "(" рдХреГрдкрдпрд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдХреЛрдгреАрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ ")ред рдЗрд╕рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдкреНрд░рд▓реЗрдЦрди рдЕрднреА рднреА рдирдо рд╣реИ рдФрд░ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЗ рддрд░реНрдХ рдФрд░ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдХреА рдореЗрд░реА рдореБрдлреНрдд рд░рд┐рдЯреЗрд▓рд┐рдВрдЧ рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рд╕рдордп рдмрдЪреЗрдЧрд╛, рдФрд░ рдореИрдВ рдЖрдкрдХреЗ рд╕рдорд░реНрдерди рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдкрд░ рднреА рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред рддреЛ рдЪрд▓рд┐рдП!
рднрд╛рдЧ 1



рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ

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

[ jsFiddle ]
angular.module('helloHabrahabr', []) .directive('habraHabr', function() { return { template:"<span>Hello Habr!</span>" /*  */ templateUrl:"helloHabr.html" } }); 

helloHabr.html
 <span>Hello Habr!</span> 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рдВрдХрд▓рди рдФрд░ рд▓рд┐рдВрдХ рдлрд╝рдВрдХреНрд╢рди рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдЬреЛрдбрд╝

рдХреНрд╖реЗрддреНрд░

рд╕реНрдХреЛрдк рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рднреАрддрд░ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╕рдВрднрд╡ рд╣реИрдВ:

рдЧреБрдВрдЬрд╛рдЗрд╢ рдмрд┐рд▓реНрдХреБрд▓ рднреА рди рд░рдЦреЗрдВред рдлрд┐рд░ рдирд┐рд░реНрджреЗрд╢, рдореЛрдЯреЗ рддреМрд░ рдкрд░, рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХ рдЪрд░ рдирд┐рд░реНрджреЗрд╢ рдЪрд░ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВред

[ jsFiddle ]
 <div ng-app="helloHabrahabr"> <div ng-controller="forExampleController"> {{hello}} <span habra-habr></span> </div> </div> 

 function forExampleController($scope){ $scope.hello="Hello Habr!"; } angular.module('helloHabrahabr', []) .directive('habraHabr', function() { return { template:"<input ng-model='hello'>{{hello}}" } }); 

рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдкред рд╕реНрдХреЛрдк = рд╕рддреНрдпред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рджрд╛рдпрд░рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред рдпрд╣реА рд╣реИ, рдкреИрддреГрдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рднреА рдЧреБрдВрдЬрд╛рдЗрд╢ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрдерд╛рдиреАрдп рд╣реЛрдВрдЧреЗ:

[ jsFiddle ]
 function forExampleController($scope){ $scope.hello="Hello Habr!"; } angular.module('helloHabrahabr', []) .directive('habraHabr', function() { return { template:"<input ng-model='hello'>{{hello}}", scope:true } }); 


рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдкред рдПрдХ рдЕрд▓рдЧ рджрд╛рдпрд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рдпрд╣реА рд╣реИ, рдЧреБрдВрдЬрд╛рдЗрд╢, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджреЗрд╢ рдХреЙрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрд╛рд▓реА рд╡рд╕реНрддреБ {} рдХреЛ рд╕реНрдХреЛрдк рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

[ jsFiddle ]

 angular.module('helloHabrahabr', []) .directive('habraHabr', function() { return { template:"<input ng-model='hello'>{{hello}}", scope:{ } } }); 


рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд▓рдЧ-рдерд▓рдЧ рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЖрддреЗ рд╣реИрдВред рдЙрд╕ рд╡рд╕реНрддреБ рдореЗрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдПрдХ рдЪрд░ рдмрд╛рдИрдВ рддрд░рдл рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рджрд╛рдИрдВ рдУрд░ рдбреЛрдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдирд╛рдо рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╢реБрд░реБрдЖрдд рдореЗрдВ рддреАрди рдкрд╛рддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ: @ / = / &ред рд╡рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 scope:{ localVar1:"@attrName1", localVar2:"=attrName2", localVar3:"&attrName3" } 


рдпрд╛ рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдкред рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рдХрд░реЗрдВ, рддреЛ рдпрд╣ рдЪрд░ рдирд╛рдо рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛:

 scope:{ localVar1:"@", /*localVar1:"@localVar1" */ localVar2:"=", /*localVar2:"@localVar2" */ localVar3:"&" /*localVar3:"@localVar3" */ } 


рдЕрдм рдХреНрд░рдо рдореЗрдВред рдЙрдкрд╕рд░реНрдЧ "@" рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛:

[ jsFiddle ]
 <div ng-app="helloHabrahabr"> <span habra-habr="hello" some-attr="Hello Habr!"></span> </div> 

 angular.module('helloHabrahabr', []) .directive('habraHabr', function() { return { template:"{{hello}}", scope:{ hello:'@someAttr' } } }); 


рдЙрдкрд╕рд░реНрдЧ "=" рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рд╕реНрдХреЛрдк рдореЗрдВ рдХреБрдЫ рдЪрд░ рдХрд╛ рдирд╛рдо рд╣реИред рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдЗрд╕рдХрд╛ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рдЪрд░ рджреЛрдиреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╣рд╛рдБ рдФрд░ рд╡рд╣рд╛рдБ рджреЛрдиреЛрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛:

[ jsFiddle ]
 <div ng-app="helloHabrahabr"> <div ng-controller="forExampleController"> {{hello}} <span habra-habr some-attr="hello"></span> </div> </div> 

 function forExampleController($scope){ $scope.hello="Hello Habr!"; } angular.module('helloHabrahabr', []) .directive('habraHabr', function() { return { template:"<input ng-model='hello'>{{hello}}", scope:{ hello:'=someAttr' } } }); 


рдЕрдВрдд рдореЗрдВ, рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "c = a + b" рдпрд╛ рдмрд╕ "a + b"ред рдФрд░ рдЕрдм рдЖрдкрдХрд╛ рд╕реНрдерд╛рдиреАрдп рд╡реИрд░рд┐рдПрдмрд▓ рдПрдХ рдлрдВрдХреНрд╢рди рдмрди рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдХреБрдВрдЬреА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЪрд░ рдХреЗ рдирд╛рдо рд╣реИрдВред рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓реЛрдХрд▓реНрд╡рд╛рд░ ({a: 1, b: 2}) рддреАрди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдВрдЧреЗред

[ jsFiddle ]
 angular.module('helloHabrahabr', []) .directive('habraHabr', function() { return { template:"{{helloFn({a:1,b:2})}}", scope:{ helloFn:'&someAttr' } } }); 

рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдк рд╕реНрдерд╛рдиреАрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЪрд░ рдХреЛ рдкреИрд░реЗрдВрдЯ рд╕реНрдХреЛрдк рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдпрджрд┐ рдЖрдк рдкрд░рд┐рдгрд╛рдо рдЪрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╛рд╣рд░ рд╕реЗ рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛:

[ jsFiddle ]
 <div ng-app="helloHabrahabr"> <div ng-controller="forExampleController"> a={{a}} b={{b}} parent's hello={{hello}} <span habra-habr some-attr="hello= a+b"></span> </div> </div> 

 function forExampleController($scope){ $scope.a="Hello"; $scope.b=" Habr!"; } angular.module('helloHabrahabr', []) .directive('habraHabr', function() { return { template:"default helloFn={{helloFn()}}\ custom hello={{helloFn({a:'Bye',b:'Habr'})}}", scope:{ helloFn:'&someAttr' } } }); 


рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред

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


All Articles