рдПрдВрдЧреБрд▓рд░ рдореЗрдВ рдХрд╛рд░рдЦрд╛рдиреЗ рдирд╣реАрдВ рд╣реИрдВред рдХреЗрд╡рд▓ рдкреНрд░рджрд╛рддрд╛ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рд╣реИ:
app.provider('$helloWorld', function() { return { world: 'World', $get: function($hello) { return $hello + this.world; } } });
рдЙрд╕рдХреЗ рдмрд╛рдж, Angular $ get рд╡рд┐рдзрд┐ рд╕реЗ рдПрдХ рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдЧрд╛:
$helloWorld = function($hello) { return $hello + this.world; }
рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рджрд╛рддрд╛ рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
$helloWorldProvider = { world: 'World' }
рд╣рдо рд╕реЗрд╡рд╛ (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░рдг рдореЗрдВ) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
app.config(function($helloWorldProvider) { $helloWorldProvider.world = 'Piter'; })
рд╕реЗрд╡рд╛ рд╣реА - рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:
app.controller('MainCtrl', function($scope, $helloWorld) { $scope.title = $helloWorld; // $hello + 'Piter' });
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
app.provider('$helloWorld', function() { return { $get: function($hello) { return $hello + 'World'; } } });
рд╣рдордиреЗ рдЬреЛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
app.factory('$helloWorld', function($hello) { return $hello + 'World'; });
рдмреЗрд╢рдХ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдгреАрдп
$helloWorldProvider
, рдХреЗрд╡рд▓ рдпрд╣ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЦрд╛рд▓реА рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖:
factory, service, value, constant
provider
рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдЪреАрдиреА рд╣реИрдВ
рдкреАрдПрд╕
$hello
рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
app.factory('$hello', function() { return 'Hello'; });
рдкреАрдкреАрдПрд╕ рдзреЛрдЦрд╛ рд╢реАрдЯ
рдкреНрд░рджрд╛рддрд╛
app.provider('$helloWorld', function() { return { world: 'World', $get: function($hello) { return $hello + this.world; } } });
рдлрд╝реИрдХреНрдЯрд░реА
app.factory('$helloWorld', function($hello) { return $hello + 'World'; }); // app.provider('$helloWorld', function() { return { $get: function($hello) { return $hello + 'World'; } } });
рд╕реЗрд╡рд╛
app.service('$helloWorld', HelloWorldClass); // app.provider('$helloWorld', function() { return { $get: function($hello) { return new HelloWorldClass($hello); } } });
рдореВрд▓реНрдп
app.value('$helloWorld', {greating: 'Hello'}); // app.provider('$helloWorld', function() { return { $get: function() { return {greating: 'Hello'}; } } });
рд╕реНрдерд┐рд░
app.constant('$helloWorld', {world: 'Piter'}); // app.provider('$helloWorld', function() { return { world: 'Piter', $get: function() { return this; // $get } } }); // config Provider app.config(function($helloWorld) { ... })
PPPS
function HelloWorldClass($hello) { ... } app.service('$helloWorld', HelloWorldClass);
рдПрдВрдЧреБрд▓рд░ рдХреЛ рдпрд╣ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреМрди рд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рд╣реИрдВ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐
HelloWorldClass
(рдФрд░
$get
рдореЗрдВ рдХреЛрдИ рднреА рдлрд╝рдВрдХреНрд╢рди)
$injector.invoke(fn)
рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдХреЛ рдкрдврд╝рддреА рд╣реИ, рдХреЛрд╖реНрдардХ рд╕реЗ рддрд░реНрдХ рдирд┐рдХрд╛рд▓рддреА рд╣реИ рдФрд░ рдЙрд╕реА рдирд╛рдо рдХреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЦреАрдВрдЪрддреА рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ
$hello
) ред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ!