Никаких фабрик в Ангуляре нет. Есть только провайдеры. Записываются так:
app.provider('$helloWorld', function() {
return {
world: 'World',
$get: function($hello) {
return $hello + this.world;
}
}
});
После этого Ангуляр создаст сервис из метода $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
P.S. $hello это просто какой-то наш сервис, взятый для примера:
app.factory('$hello', function() {
return 'Hello';
});
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий