2014-01-11 63 views
0

我正在創建一個測驗,我想添加用戶給予數組(myAnswers)的答案,當測驗完成時,我將用戶重定向到摘要頁面,其中他可以看到正確的答案和他給出的答案。這些都是不同的控制器。我嘗試過服務,但這並不成功...控制器之間傳遞數據(服務)角

有人可以幫我用這個嗎?

服務

var lycheeServices = angular.module('lycheeControllers', []) 

lycheeServices.service('myAnswerService', function() { 
var myAnswers= []; 
this.AddAnswer = function(number, a){ 
    myAnswers[number-1] = a; 
}; 
this.getAnswer = function(number){ 
    return myAnswers[number-1]; 
}; 
}); 

控制器測驗

lycheeControllers.controller('quizCtrl', ['$scope', '$http', 'myAnswerService', 
function ($scope, $http, myAnswerService) { 


$scope.checked = function (answer) { 
     myAnswerService.addAnswer(number, answer.answer); 
    } 

控制器彙總

lycheeControllers.controller('summaryCtrl', ['$scope', '$http', 'myAnswerService', function ($scope, $http, myAnswerService) { 

$scope.myAnswer = myAnswerService.getAnswer(number); 
] 

回答

0

在你的控制器總之,當你使用檢索值的myAnswerService.getAnswer(number);,它返回一個新值,您的$scope.myAnswerc opy的價值。

如果你的答案是一個值類型,它的任何變化將不會影響服務答案數組中的值。

如果你的答案數組包含對象(引用類型),然後操縱屬性$scope.myAnswer將更新的同一對象由服務的數組中的回答中引用的屬性。但是,如果你有更換另一個答案,答案數組內你的答案不會注意到這些變化

我不知道你想達到什麼目的,但一個合理的解決方案是你的服務對象存儲範圍。就像這樣:

$scope.myAnswer = myAnswerService 

注:當你這樣做的重定向,確保你不做整頁刷新,因爲你的數據將被徹底清除。

+0

我想在我的摘要中給出關於該問題(數字)的答案。因此,從數組myAnswers – Warri

+0

@Warri獲取答案:請檢查我的更新答案。順便說一句,什麼不適合你? –

+0

它已經工作了,我只是忘了把我的服務添加到我的應用程序模塊。感謝Thanx! – Warri

相關問題