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

Not able to retrieve data in the other controller using common shared service

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

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

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