在AngularJS中的另一个ng-app中使用来自一个ng-app的Cookie值

时间:2016-05-11 23:42:47

标签: javascript angularjs cookies angular-cookies

我知道在项目中拥有多个ng-apps并不是一个好习惯,但我的项目被划分为一般并不相互关联的细分,而且我或多或少地留下了别无选择。

我的问题是ng-cookie在两个单独的Javascript文件中的持久性。我们假设dashboard1.htmlcontroller1.js相关联,dashboard2.htmlcontroller2.js相关联。

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

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

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

这是一个模块的Controller和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-app的控制器中,我正在设置一个cookie,它运行正常,我确实在控制台上得到了预期的响应。这是在文件controller1.js

现在我正在尝试访问controller2.js中的相同cookie,这些cookie全部由不同的ng-app绑定。

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。

1 个答案:

答案 0 :(得分:0)

如果您希望在标签或域之间共享数据,您可以尝试使用zendesk的“跨存储”,只需使用AngularJS实现它,它就像魅力一样。

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

link:zendesk/cross-storage

相关问题