Mam problemy z dostępem do wbudowanych usług Angular takich jak $ http podczas tworzenia usługi za pomocą ES6.Usługi z ES6 (AngularJS)
Na przykład tworzę usługę "ResultsFinder", która wykona wywołanie AJAX, a następnie zrobi kilka rzeczy. Problem polega na tym, że mam tylko dostęp do $ http na konstruktorze (jeśli przekazuję go jako argument), ale nie na inne metody (takie jak getResults).
Zobacz ten przykład kodu:
(() => {
'use strict';
class ResultsFinder {
constructor($http) {}
getResults() {
return 'ResultsFinder';
}
}
/**
* @ngdoc service
* @name itemManager.service:ResultsFinder
*
* @description
*
*/
angular
.module('itemManager')
.service('ResultsFinder', ResultsFinder);
}());
Inside getresults nie mam dostępu do $ http. W celu uzyskania dostępu należy zrobić coś, czego nie czujesz się dobrze tak:
(() => {
'use strict';
class ResultsFinder {
constructor($http) {
this.$http = $http;
}
getResults() {
// Here I have access to this.$http
return 'ResultsFinder';
}
}
/**
* @ngdoc service
* @name itemManager.service:ResultsFinder
*
* @description
*
*/
angular
.module('itemManager')
.service('ResultsFinder', ResultsFinder);
}());
ktoś może mi dać kilka rad na temat właściwego sposobu obsługi to?
Tak to działa klasa, trzeba określić swoje właściwości w konstruktorze i uzyskać do nich dostęp w innych metodach. Nie ma w tym nic złego. – Pierrickouw
To jest propperowy sposób tworzenia usług? Dziwne, że muszę mieć dostęp do "globalnych" usług dzięki tej usłudze. $. – jeffarese
Usługa nie jest globalna. Jest członkiem klasy. W przeglądarkach globalne vars są właściwościami 'window'. 'okno. $ http.get ("/")' byłoby nieprawidłowe. Dzięki TypeScript możesz opisać element jako "prywatny". – Martin