无法将AngularJS服务与控制器同步(angular.copy)

时间:2015-11-02 21:06:50

标签: javascript angularjs angularjs-scope angularjs-service angularjs-controller

我已经设置了两个控制器(控制器A和控制器B)和一个服务(服务)。我正在尝试将控制器A中的数据同步到服务,并将该信息提供给控制器B.

在我的服务中,我已经建立了变量confirmdata并获取并设置了函数:

function setData(data) {
  confirmdata = angular.copy(data);
}

function getData() {
  return confirmdata;
}

在控制器A中,我创建了一个函数sync,用于将控制器中的信息同步到服务中:

this.sync = function () {
var data = {
payment: this.getpayment()
}
Service.setData(data);

在控制器B中,我分配了一个函数:

this.sync  = function () {
this.viewData = Service.getData();
console.log('TestingData', this.viewData);

我不知道的原因;我的控制台日志只应在返回getpayment()函数的结果时返回undefined。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您未定义的事实表明您尚未初始化' confirmdata'在你的服务中。这是否是实际问题,并不清楚。举个简单的例子,我会设计你的服务:

myApp.factory('sharedService', [function () {
    var confirmdata = {};
    return {
        setData: function (newData) { confirmdata = newData; },
        getData: function getData() { return confirmdata;  }
    }
}]);

看看this plunker。它给出了一个通过服务在控制器之间共享数据的示例。