Как стать автором
Обновить

Комментарии 11

Для понимания этих гайдов нужен самый минимальный уровень английского. Стоило ли переписывать то же самое(тем более, что различных гайдов разного уровня по Angular 2 под TypeScript пруд пруди)?

А вот структурированной подробной информации по Angular 2 под JavaScript особо и нет, с удовольствием почитал бы такую статью, пусть и на английском.

P.S. Перевел обзорную часть по архитектуре Angular 2, переделав примеры под ES5: Angular 2 in JavaScript. Также реализовал поэтапно туториал «Tour of Heroes» на ES5: JavaScript реализация Tour of Heroes. Надеюсь, кому-то поможет :)
Спасибо за отличные переводы на русский и ES5. Только вот в сервисе героев (HeroService) из «Angular 2 in JavaScript» используются промисы. Это же вроде ES6. Чем это можно заменить? Нужна поддержка IE10.
Чем это можно заменить?

Observable. Собственно, в ангуляре же Http сервис теперь возвращает не промисы, а Observable из RxJS. А для es6 промисов можно полифил подключить.

Рад, что Вам понравилось. Момент с Promise: на самом деле он не нужен в этом туториале, он скорее для того, чтобы показать, что сервисы также используются для получения удаленных данных. Так что почти честно :)

Чем заменить? Поискать библиотеки, либо реализовать самому. По идее, вещь не сильно сложная.

З.Ы. Только приступаю к изучению JavaScript, прошу сильно не пинать.
Можно просто подключить полифил bluebird с реализацией промисов на ES5
Полу-машинный перевод без учета лингвистических особенностей обоих языков… При переводе тех. статей — бессмысленный и беспощадный.

Возьмем из статьи класс 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. В джанге внедрения нет, поэтому там по-другому.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории