Рассмотрим следующий компонентКак внедрить услугу во вспомогательный класс ES6
import DoSomethingSpecial from '....';
export default MyComponentController {
constructor() {
this.result = new DoSomethingSpecial().getData();
}
...
}
Итак, MyComponentController
, конечно, контроллер для компонента и DoSomethingSpecial
класс является классом ES215.
У меня проблема заключается в следующем: Внутри DoSomethingSpecial
я хотел бы использовать некоторые угловые услуги, как $ HTTP и/или $ д и т.д. Как я могу вводить их в этот класс, например:
export default class DoSomethingSpecial {
constructor() {
}
getData() {
let $q = angular.injector().get('$q');
....
}
}
Это, однако, не работает. Есть ли другой способ, или я должен изменить этот класс на службу?
UPDATE: Возможный вариант использования: Предположим, вы загружаете в службе список объектов, которые вы конвертировать в экземпляры MyRecordItems следующим
import MyRecordItem from '...';
export default class MyRecordsService {
constructor($http) {
$http.get('url', { options}).then((response) => {
this.records = [];
response.data.forEach((item) => {
this.records.push(new MyRecordItem(item));
});
});
}
}
Далее, где-то в ваше приложение этот список используется -> изменено -> и сохранено
let list = myRecordService.getList();
list[0].count = 10;
list[0].save();
Как эта запись сохраняется? Это может быть следующим
export default class MyRecordItem {
constructor(data) { this.data = data; }
save() {
let url = ....;
return angular.$injector.get('$http').post(url, this.data)
}
}
Теперь это странно. 'DoSomethingSpecial' не является Угловым сервисом, но использует угловые сервисы? – zeroflagL
Хорошо, я потратил некоторое время, чтобы подумать о прецеденте, который я добавил в свой пост. –
'save()' вызывается из Угловой службы или контроллера. Так почему бы не назвать 'save ($ http)' или 'save ($ http.post)'? – zeroflagL