0

我已经设置了两个控制器(控制器A和控制器B)和一个服务(Service)。我试图从控制器A的数据同步到服务,并呈现这些信息来控制B.无法将AngularJS服务与控制器同步(angular.copy)

在我的服务,我已经建立了一个变量confirmdata和获取和设置功能:

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

function getData() { 
    return confirmdata; 
} 

在控制器A I已经创建了一个函数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

控制器B可能在控制器A将数据设置给它之前运行? – PSL

+0

@PSL可能是对的,在你的控制器中放一个console.log来查看哪个被调用 – Chris

回答

0

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

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

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