2014-01-11 6 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.myAnswer является c opy значения.

Если ваш ответ является типом значений, любые изменения на нем не повлияют на значение в вашем массиве ответов службы.

Если ответы массив содержит объекты (ссылочный тип), а затем манипулировать свойства из $scope.myAnswer обновит свойства того же объекта ссылается ответ внутри массива службы. Но если вы замените его другим ответом, ваш ответ в массиве ответов не заметит изменения.

Я не знаю, чего вы пытаетесь достичь, но разумным решением является сохранение объекта службы в объем. Как это:

$scope.myAnswer = myAnswerService 

Примечание: Когда вы делаете редирект, убедитесь, что вы не делаете полной страницы обновления, потому что ваши данные будут удалены полностью.

+0

Я хочу показать ответ, который был дан по этому вопросу (номеру) в моем резюме. Поэтому получите ответ из массива myAnswers – Warri

+0

@Warri: проверьте мой обновленный ответ. Кстати, что вам не сработало? –

+0

Он работает уже, я просто забыл добавить свой сервис в свой модуль приложения. В любом случае, спасибо за помощь! – Warri

Смежные вопросы