从控制器调用Angular1服务以收集数据

时间:2016-07-21 00:06:38

标签: javascript angularjs

我正在创建一个包含许多视图的表单,这些视图将聚合到包含用户信息的对象。我有一个具有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
  }
}

和form-controller:

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 :(得分:0)

服务是一个单例,因此整个应用程序中只有一个服务实例。如果您需要从formService创建多个对象实例,那么您应该替换它:

.service('formService', FormService));

用这个:

.factory('formService', FormService));

在课堂上注入服务会很有趣,因此您不需要使用new FormService进行实例化。