Я установил два контроллера (контроллер 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()
. Я что-то упустил?
Тот факт, что вы получаете undefined, указывает на то, что вы не инициализировали "confirmdata" в своей службе. Является ли это фактическим вопросом, хотя, не ясно. Для простого примера я бы разработал ваш сервис следующим образом:
myApp.factory('sharedService', [function () {
var confirmdata = {};
return {
setData: function (newData) { confirmdata = newData; },
getData: function getData() { return confirmdata; }
}
}]);
Взгляните на этот плункер. Он дает пример совместного использования данных между контроллерами через службу.