Tworzę formularz z wieloma widokami, które będą agregować do obiektu zawierającego informacje o użytkowniku. Mam komponent, który ma plik form.js:
import angular from "angular";
import FormController from "./form-controller";
import FormService from "./form-service";
export default angular.module("Form", [])
.controller("formController", FormController)
.service("formService", FormService));
form-service.js:
import angular from "angular";
export default class FormService {
constructor() {
this.master = {};
}
addData(user) {
this.master = angular.extend(this.master, user);
return user; //don"t really need to return this yet
}
}
i kontroler formy:
import angular from "angular";
import FormService from "./form-service";
export default class FormController {
constructor() {
this.service = new FormService;
}
update(user) {
this.service.addData(this.master);
}
}
Problem polega na tym, że dane nie są agregowane, prawdopodobnie dlatego, że tworzę nowy obiekt usługi w konstruktorze FormController.
formService2.default.addData nie jest funkcją
Komunikat o błędzie
Wiem, że to wydaje się głupie, ale jestem trochę nowy w kanciastych i nie jestem pewien, jak powinienem wywoływać funkcję usługi z kontrolera.
Odpowiedzi:
0 dla odpowiedzi № 1Usługa jest singletonem, więc jest tylko jedenwystąpienie Twojej usługi w całej aplikacji. Jeśli potrzebujesz utworzyć więcej niż jedno wystąpienie swoich obiektów z formularzaService, powinieneś zastąpić to:
.service("formService", FormService));
z tym:
.factory("formService", FormService));
Ciekawe, że wstrzykniesz usługę do klasy, więc nie musisz tworzyć instancji new FormService
.