Невозможно синхронизировать сервис AngularJS с контроллерами (angular.copy)

0

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

В моей службе я установил переменную confirmdata и get и set functions:

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

function getData() {
  return confirmdata;
}

В контроллере A я создал функцию 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 установит для него данные?
  • 0
    @PSL может быть правильным, поместите console.log в свои контроллеры, чтобы увидеть, кто вызывается первым
Теги:
angularjs-scope
angularjs-controller
angularjs-service

1 ответ

0
Лучший ответ

Тот факт, что вы получаете undefined, указывает на то, что вы не инициализировали "confirmdata" в своей службе. Является ли это фактическим вопросом, хотя, не ясно. Для простого примера я бы разработал ваш сервис следующим образом:

myApp.factory('sharedService', [function () {
    var confirmdata = {};
    return {
        setData: function (newData) { confirmdata = newData; },
        getData: function getData() { return confirmdata;  }
    }
}]);

Взгляните на этот плункер. Он дает пример совместного использования данных между контроллерами через службу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню