ユーザー情報を含むオブジェクトに集約される多くのビューを持つフォームを作成しています。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
}
}
およびフォームコントローラー:
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);
}
}
したがって、問題は、おそらくFormControllerコンストラクターで新しいサービスオブジェクトをインスタンス化しているために、データが集計されないことです。ただし、そうでない場合は、
formService2.default.addDataは関数ではありません
エラーメッセージ
これはばかげているように思えますが、私は角度に少し慣れていないので、コントローラーからサービス関数をどのように呼び出すべきか本当にわかりません。
回答:
回答№1は0サービスはシングルトンなので、1つしかありませんアプリケーション全体でのサービスのインスタンス。 formServiceからオブジェクトのインスタンスを複数作成する必要がある場合は、これを置き換える必要があります。
.service("formService", FormService));
これとともに:
.factory("formService", FormService));
興味深いのは、クラス内にサービスを注入するため、「インスタンス化する必要はありません」 new FormService
.