/ / Wywoływanie usługi Angular1 od kontrolera w celu gromadzenia danych - javascript, angularjs

Wywoływanie usługi Angular1 z kontrolera w celu zbierania danych - javascript, angularjs

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 № 1

Usł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.