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。它給出了一個通過服務在控制器之間共享數據的例子。

相關問題