Hello Angular Guru,
我使用服务在两个控制器之间共享数据。我在BankController和CreateBankController之间共享数据。
我观察到CreateBankController初始化并创建Popup Service(sharedservice)的实例。由于它是一个单例,弹出服务不会每次都实例化,所以它是一个单独的实例。现在在CreateBankController中保存过时的数据。我可以看到数据被设置到我的弹出服务中,但CreateBankController有一个第一次创建的弹出服务的陈旧实例。我想,因为它是一个预期行为的单身人士。
使用我采用的方法进行了几次查询
首先,这是在两个控制器之间共享数据的正确方法吗?请检查银行。 create.controller.js获取完整代码。有更好的方法吗?
我是否应该使用广播方法在设置时向我的弹出服务广播更改。这是采取的方法吗?如果我调用广播方法,CreateBankController中的Popup Service实例是否会使用更改的数据进行更新?感谢您是否可以通过更改plunker或任何代码示例向我展示,因为我正在尝试了解广播方法的实现。
PLUNKER LINK Plunker Code
步骤
选择任何其他行,您将看到反映的陈旧数据。
(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();
}
}
}());`