2014-01-11 99 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

相关问题