在AngularJS中的另一个ng应用程序中使用来自一个ng程序的Cookie值

Using Cookie value from one ng-app in another ng-app in AngularJS

本文关键字:ng 一个 程序 Cookie 另一个 AngularJS 应用程序      更新时间:2023-09-26

我知道在一个项目中拥有多个ng应用程序不是一个好的做法,但我的项目被划分为通常彼此不相关的部分,加上我或多或少没有其他选择。

我的问题是ng-cookie在两个独立的Javascript文件中的持久性。假设我有链接到controller1.jsdashboard1.html和链接到controller2.jsdashboard2.html

现在,我想访问控制器2中控制器1的cookie值。当我尝试这样做时,结果显示undefined,这意味着我无法访问由另一个Javascript文件设置的cookie值。

请告诉我如何解决这个问题。

注意:Javascript文件为每个应用程序定义了相应的ng应用程序和控制器。

这是控制器和ng-app组成的一个模块。

var app = angular.module('mainpageapp', ['ngRoute','ngCookies']);
    app.controller('ctrlmainpage', ['$scope', '$timeout','$http', '$route', '$routeParams', '$location', '$rootScope', '$cookies', function ($scope, $timeout, $http, $route, $routeParams, $location, $rootScope, $cookies) {
        console.log("Csadad");
        $cookies.myFavorite = 'TestCookie';
        var favoriteCookie = $cookies.myFavorite;
        console.log("Cookie" + favoriteCookie);

现在,在这个ng应用程序的控制器中,我正在设置一个cookie,它工作正常,我确实在控制台上得到了预期的响应。这在文件控制器.js 中

现在我正在尝试访问controller2.js中的同一个cookie,这些cookie都由不同的ng应用程序绑定在一起。

var app = angular.module('myApp', ['ngRoute', 'smart-table', 'ngCookies']);
var id = 'hasdh';
app.controller('dashmerctrl', ['$scope', '$timeout','$http', '$route', '$routeParams', '$location', '$rootScope', '$cookies', function ($scope, $timeout, $http, $route, $routeParams, $location, $rootScope, $cookies)
{
    var favoriteCookie1 = $cookies.myFavorite;
    console.log("Cookie1" + favoriteCookie1); 

她的我被定义为输出。

我想访问这个文件中的相同cookie。

如果您希望在选项卡或域之间共享数据,您可以尝试zendesk的"交叉存储",只需使用AngularJS实现它,它就很有魅力。

它利用window.postMessage()技术来实现这种行为。

链接:zendesk/交叉存储