I am in a situation where I need to transfer a user object from one controller to another controller, which opens in a new window. I tried several common ways for this, for example $emit to $ rootScope, using a factory or service and $broadcast from there to the second controller.
But I was always stuck in root crops. I can register the variables there, but they seem to disappear when a new window opens (even undefined does not appear in the console of the new window). I can get fixed variables from root crops, but nothing that came from the first controller.
Does anyone have any ideas how I can solve this?
Here is my code:
// SHARING DATA BETWEEN CONTROLLERS VIA ROOT SCOPE: var table_app = angular.module("tableApp", []) .factory("sharedVars", function($rootScope, $log) { /* Receive emitted message and broadcast it. */ $rootScope.$on("handleEmit", function(event, object){ var value1 = object.data1; var value2 = object.data2; var value3 = object.data3; $log.log(value2, value3) // WORKS $rootScope.$broadcast("handleBroadcast", {data1: value1, data2: value2, data3: value3}); }) // JUST TO CHECK IF I CAN GET DATA FROM HERE: return { fixedSharedObject: {data1: 22, data2: 33, data3: 44}} // WORKS }) .controller("FirstCtrl", function ($scope, $rootScope, $q, $log, sharedVars) { $scope.onClick = function(number, adress) { newWindow = window.open(adress, "Zweitfenster", "width=700, height=900"); newWindow.focus(); var lineNumber = document.getElementById("lineCell" + number).innerHTML; var blockNumber = document.getElementById("blockCell" + number).innerHTML; var tripId = document.getElementById("tripCell" + number).innerHTML; $log.log(lineNumber, blockNumber, tripId); // WORKS $scope.$emit("handleEmit", {data1:lineNumber, data2: blockNumber, data3: tripId}); } }) .controller("SecondCtrl", function($scope, $rootScope, $log, sharedVars){ $scope.singleTripLineNumber = sharedVars.fixedSharedObject; // WORKS $scope.singleTripBlockNumber = sharedVars.fixedSharedObject; $scope.$on("handleBroadcast", function(event, object){ var value1 = object.data1; var value2 = object.data2; // DOES NOT WORK! var value3 = object.data3; $log.log(value3) }) });