Pull to refresh

Comments 9

Да вот, не всем понятно до сих пор :-)
От провайдера к фабрике упростили. молодцы… а дальше?
Один шажок же всего к сервису, и полнее б картинка была.
Восполню этот небольшой пробел. :)

Допустим, у нас есть такой «класс» (условно, помним, что классов в ES5 нет):

function HelloService(name) {
     this.name = name;
}
HelloService.prototype.getGreeting = function() {
     return "Hello, " + (this.name || 'world') + "!";
}


Пусть у нас будет константа name и фабрика:

app.constant('name', 'Vasya');

app.factory('$hello', function(name) {
    return new HelloService(name);
});


То же самое можно записать короче:

app.service('$hello', HelloService);


где вторым аргументом передается функция-конструктор. При этом сработает inject-магия и значение name для конструктора HelloService автоматически заполнится из константы (разумеется, надо не забывать, что при минификации кода нужно явно прописывать $inject).

Таким образом, module.service — это еще один синтаксический сахар для простейшего случая фабрики.
да, все верно. если посмотреть исходный код, то становится ясно — я как то заметку по этому поводу делал.
Спасибо, стало понятно что к чему. Еще узнал про value, до этого использовал только constant.
Sign up to leave a comment.

Articles