0

Я установил два контроллера (контроллер A и контроллер B) и службу (услугу). Я пытаюсь синхронизировать данные с контроллера на службу, и представить эту информацию в контроллер В.Не удалось синхронизировать услугу AngularJS с контроллерами (угловая.copy)

В моей службы, я установил переменную confirmdata и получить и установить функции:

function setData(data) { 
    confirmdata = angular.copy(data); 
} 

function getData() { 
    return confirmdata; 
} 

в контроллере я создал функцию 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); 

По какой-то причине я не знаю; мой консольный журнал просто возвращает undefined, когда он должен возвращать результаты функции getpayment(). Я что-то упустил?

+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. Он дает пример совместного использования данных между контроллерами через службу.

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