无法将 AngularJS 服务与控制器同步 (angular.copy)
Unable to sync AngularJS service with controllers (angular.copy)
我设置了两个控制器(Controller A和Controller B)和一个服务(Service)。我正在尝试将数据从控制器 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()
函数的结果时,我的控制台日志只是 returns 未定义。我在这里遗漏了什么吗?
您未定义的事实表明您尚未在您的服务中初始化 'confirmdata'。这是否是实际问题尚不清楚。举个简单的例子,我会这样设计你的服务:
myApp.factory('sharedService', [function () {
var confirmdata = {};
return {
setData: function (newData) { confirmdata = newData; },
getData: function getData() { return confirmdata; }
}
}]);
看看this plunker。它给出了通过服务在控制器之间共享数据的示例。
我设置了两个控制器(Controller A和Controller B)和一个服务(Service)。我正在尝试将数据从控制器 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()
函数的结果时,我的控制台日志只是 returns 未定义。我在这里遗漏了什么吗?
您未定义的事实表明您尚未在您的服务中初始化 'confirmdata'。这是否是实际问题尚不清楚。举个简单的例子,我会这样设计你的服务:
myApp.factory('sharedService', [function () {
var confirmdata = {};
return {
setData: function (newData) { confirmdata = newData; },
getData: function getData() { return confirmdata; }
}
}]);
看看this plunker。它给出了通过服务在控制器之间共享数据的示例。