Невозможно получить данные на другом контроллере, используя общий общий сервис
Я создаю общую службу под названием Popup Service, чтобы я мог обмениваться данными между двумя контроллерами, т.е. BankController и CreateBankController.
Я могу установить объект, которым мне нужно поделиться в PopupService. PopupService вызывается в BankController (при нажатии на ссылку "Изменить" в строке данных), чтобы установить объект для совместного использования.
Затем CreateBankController вызывается всплывающей формой, но в CreateBankcontroller я не могу получить доступ к общим данным из PopupService, я получаю сообщение об ошибке, что переменная objectToEdit не определена.
- Подскажите, пожалуйста, как я могу заставить PopupService обмениваться данными между двумя контроллерами?
- Могут ли данные в общей службе Popup оказаться переопределенными конкурирующими действиями пользователя и показать устаревшие данные
РАБОЧИЙ ПЛАНКЕР https://plnkr.co/edit/y8dZNU?p=preview
Получение данных в CreateBankController
CreateBankController.$inject = ['PopupService'];
function CreateBankController(PopupService) {
var vm = this;
var data = {
bankName: "",
bankAddress: "",
};
debugger;
if (PopupService.getObjectToEdit() !== null) {
data = PopupService.getObjectToEdit();
}
УСТАНОВКА ОБЩИХ ДАННЫХ В BankController
$scope.bankGrid = {
dataSource: queryResult,
columns: [{
dataField: 'orderID',
caption: 'Order ID'
}, {
width: 50,
alignment: 'center',
caption: 'Edit',
cellTemplate: function(container, options) {
$('<a/>').addClass('dx-link')
.text('Edit')
.on('dxclick', function() {
PopupService.addObjecToEdit(options.data);
$scope.showPopup = true;
})
.appendTo(container);
}
служба общих данных - POPUP SERVICE
(function () {
'use strict';
angular
.module('myApp')
.factory('PopupService', PopupService);
function PopupService() {
var popupInstance = {};
var objectToEdit = {};
var service = {
addObjecToEdit : addObjecToEdit,
getObjectToEdit: getObjectToEdit,
showPopup: showPopup,
hidePopup: hidePopup
};
return service;
//Functions
function addObjecToEdit(pObjectToEdit){
objectToEdit = pObjectToEdit;
}
function getObjectToEdit() {
return objecTtoEdit;
}
function showPopup(){
popupInstance.showPopup();
}
function hidePopup(){
popupInstance.hidePopup();
}
}
}());
1 ответ
У вас есть опечатка в сервисе:
function getObjectToEdit() {
return objecTtoEdit;
}
изменить на:
function getObjectToEdit() {
return objectToEdit;
}