角色服务共享数据 - 这是正确的方法吗?

时间:2017-01-25 11:20:53

标签: angularjs angularjs-directive angularjs-scope

Hello Angular Guru,

我使用服务在两个控制器之间共享数据。我在BankController和CreateBankController之间共享数据。

我观察到CreateBankController初始化并创建Popup Service(sharedservice)的实例。由于它是一个单例,弹出服务不会每次都实例化,所以它是一个单独的实例。现在在CreateBankController中保存过时的数据。我可以看到数据被设置到我的弹出服务中,但CreateBankController有一个第一次创建的弹出服务的陈旧实例。我想,因为它是一个预期行为的单身人士。

使用我采用的方法进行了几次查询

  1. 首先,这是在两个控制器之间共享数据的正确方法吗?请检查银行。 create.controller.js获取完整代码。有更好的方法吗?

  2. 我是否应该使用广播方法在设置时向我的弹出服务广播更改。这是采取的方法吗?如果我调用广播方法,CreateBankController中的Popup Service实例是否会使用更改的数据进行更新?感谢您是否可以通过更改plunker或任何代码示例向我展示,因为我正在尝试了解广播方法的实现。

  3. PLUNKER LINK Plunker Code

    步骤

    1. 创建银行标签,选择前几个订单中的任何一个'银行行。
    2. 点击编辑链接,第一次正常工作。
    3. 选择任何其他行,您将看到反映的陈旧数据。

      (function () {
      'use strict';
      
      angular
      .module('myApp')
      .factory('PopupService', PopupService);
      
      function PopupService() {
      var popupInstance = {};
      var objectToEdit = {};
      var service = {
          addObjecToEdit : addObjecToEdit,
          getObjectToEdit: getObjectToEdit,
          setPopupInstance: setPopupInstance,
          getPopupInstance : getPopupInstance,
          showPopup: showPopup,
          hidePopup: hidePopup
      
      };
      return service;
      
      function setPopupInstance(instance){
          popupInstance = instance;
      }
      
      function getPopupInstance(){
          return popupInstance;
      }
      
      //Functions
      function addObjecToEdit(pObjectToEdit){
        console.log("Adding object to Edit in Popup Service : " + JSON.stringify(pObjectToEdit));
          objectToEdit = pObjectToEdit;
      }
      
      function getObjectToEdit() {
        console.log("Getting object to Edit in Popup Service : " + JSON.stringify(objectToEdit));
          return objectToEdit;
      }
      
      function showPopup(){
          popupInstance.showPopup();
      }
      
      function hidePopup(){
          popupInstance.hidePopup();
      }
      }
      }());`
      

0 个答案:

没有答案