无法使用公共共享服务检索其他控制器中的数据



我正在创建一个名为Popup service的共享服务,这样我就可以在两个控制器(即BankController和CreateBankController)之间共享数据。

我可以设置我需要在PopupService中共享的对象。在BankController中调用popupService(同时单击数据行上的Edit链接)以设置要共享的对象。

然后弹出窗体调用CreateBankController,但在CreateBankController中,我无法从PopupService访问共享数据,我得到一个错误,即未定义objectToEdit变量。

  1. 请告诉我如何使PopupService在两个控制器之间共享数据
  2. 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);
}

共享数据服务-弹出窗口服务

(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();
}
}
}());

您在服务中有一个拼写错误:

function getObjectToEdit() {
return objecTtoEdit;
}

更改为:

function getObjectToEdit() {
return objectToEdit;
}

最新更新