Comments 11
А вот структурированной подробной информации по Angular 2 под JavaScript особо и нет, с удовольствием почитал бы такую статью, пусть и на английском.
P.S. Перевел обзорную часть по архитектуре Angular 2, переделав примеры под ES5: Angular 2 in JavaScript. Также реализовал поэтапно туториал «Tour of Heroes» на ES5: JavaScript реализация Tour of Heroes. Надеюсь, кому-то поможет :)
Чем это можно заменить?
Observable. Собственно, в ангуляре же Http сервис теперь возвращает не промисы, а Observable из RxJS. А для es6 промисов можно полифил подключить.
Чем заменить? Поискать библиотеки, либо реализовать самому. По идее, вещь не сильно сложная.
З.Ы. Только приступаю к изучению JavaScript, прошу сильно не пинать.
Возьмем из статьи класс Hero. Допустим, мы хотим иметь возможность сохранять героя в базе данных на сервере. Добавим герою метод save(), который для сохранения героя использует Angular-сервис Http. Каким образом должен резолвится этот (Http) сервис в классе Hero, чтобы была возможность использовать следующий подход?
var hero = new Hero();
hero.name = 'Windstorm';
hero.save();
Добавим герою метод save()
Такие вещи лучше вынести в отдельный сервис. Тут Hero — это DTO, у него нет поведения.
Каким образом должен резолвится этот (Http) сервис в классе Hero
Что подразумевается под этим? Какой коллбек в then засунуть? Ну если уж и идти по такому сомнительному пути, то нужно просто обновить поля Hero новыми значениями.
Да и нынче методы Http не возвращают промисы, их заменили Observable-объекты.
Такие вещи лучше вынести в отдельный сервис.
Имеете в виду сделать сервис типа HeroSaver? Писать что-то вроде:
var hero_saver = injector.get(HeroSaver);
var hero = new Hero();
hero.name = 'Windstorm';
hero_saver.save(hero);
Тут Hero — это DTO, у него нет поведения.
Да, но, допустим нужно реализовать поведение, например, как в Django.
hero = Hero(name="Windstorm")
hero.save()
Что подразумевается под этим? Какой коллбек в then засунуть?
Каким образом правильно было бы получить сервис Http в объекте класса Hero, чтобы реализовать функционал save? Как пример реализации:
class Hero {
http:Http;
constructor(injector:Injector) {
this.http = injector.get(Http);
}
save () {
this.http.post.....
}
}
....
var hero = new Hero(injector);
hero.name = 'Windstorm';
hero_saver.save(hero);
Правильнее — делать через внедрение зависимостей, никаких injector.get
. В джанге внедрения нет, поэтому там по-другому.
Angular 2 Beta, обучающий курс «Тур героев» часть 1