/ / Appel d’un service Angular1 à partir d’un contrôleur pour collecter des données - javascript, angularjs

Appeler un service Angular1 depuis un contrôleur pour collecter des données - javascript, angularjs

"Je crée un formulaire avec de nombreuses vues qui seront agrégées à un objet contenant des informations sur l'utilisateur. J'ai un composant qui a un fichier 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
}
}

et contrôleur de forme:

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);
}
}

Le problème est donc que les données ne s’agrègent pas, probablement parce que j’instancie un nouvel objet de service dans le constructeur FormController. Cependant, sinon, je reçois un

formService2.default.addData n'est pas une fonction

Message d'erreur

Je sais que cela semble idiot, mais je suis un peu nouveau pour angulaire et je ne sais pas vraiment comment appeler une fonction de service à partir du contrôleur.

Réponses:

0 pour la réponse № 1

Un service est un singleton, donc il n'y en a qu'uninstance de votre service dans l'ensemble de l'application. Si vous avez besoin de créer plus d'une instance de vos objets à partir de votre formService, vous devez remplacer ceci:

.service("formService", FormService));

avec ça:

.factory("formService", FormService));

Sera intéressant que vous injectiez le service dans la classe, donc vous n’avez pas besoin d’instancier avec new FormService.