Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在两个控制器angularjs之间共享数据_Javascript_Angularjs_Mean Stack_Angular Controller - Fatal编程技术网

Javascript 在两个控制器angularjs之间共享数据

Javascript 在两个控制器angularjs之间共享数据,javascript,angularjs,mean-stack,angular-controller,Javascript,Angularjs,Mean Stack,Angular Controller,在angularjs中,我似乎面临着在控制器之间共享数据的问题 我有两个HTML文件,每个文件一个控制器,一个共享信息的服务和一个用于路由的常规应用程序文件 这是第一个文件 <div class="container"> <button ng-click="broadcastData()"> Send </button> </div> 这是第二个HTML文件:(infoView.HTML) 以下是共享信息的服务: angular.module(

在angularjs中,我似乎面临着在控制器之间共享数据的问题 我有两个HTML文件,每个文件一个控制器,一个共享信息的服务和一个用于路由的常规应用程序文件

这是第一个文件

<div class="container">
<button ng-click="broadcastData()"> Send  </button> </div>
这是第二个HTML文件:(infoView.HTML)

以下是共享信息的服务:

angular.module('prkApp').factory('shareInfoService',
  ['$rootScope',
 function ($rootScope) {

//Return the particular function
return ({
  sendData: sendData
});

function sendData(data)
{
    $rootScope.$broadcast('sendTheData', data);
};
}]);
当我单击第一个HTML文件中的按钮时,位置将更改为infoView,并调用shareInfoService.broadcastData函数

它重定向到第二个HTML文件。但是,此页面上显示的信息是“你好”,而不是“好”

web控制台日志显示 {info:“好的”} 先打招呼,然后马上打招呼


如何纠正,以显示前一控制器发送的数据

您正在更改位置之前发送广播,因此在广播事件时不会加载
infoController
中的侦听器。您可以将值存储在服务中,然后让
infoController
在加载时检索它,而不是广播

服务

angular.module('prkApp').factory('shareInfoService', ['$rootScope', function($rootScope) {
    var data;

    //Return the particular function
    return ({
      sendData: sendData,
      getData: getData
    });

    function sendData(new_data) {
      data = new_data;
    };

    function getData() {
      return data;
    }
  }
]);
控制器

angular.module('myApp').controller('infoController', ['$scope', '$rootScope', function($scope, $rootScope) {
    $scope.data = "hello";
    console.log($scope.data);
    $scope.data = shareInfoService.getData();
    console.log($scope.data);
  }
]);

您正在更改位置之前发送广播,因此在广播事件时不会加载
infoController
中的侦听器。您可以将值存储在服务中,然后让
infoController
在加载时检索它,而不是广播

服务

angular.module('prkApp').factory('shareInfoService', ['$rootScope', function($rootScope) {
    var data;

    //Return the particular function
    return ({
      sendData: sendData,
      getData: getData
    });

    function sendData(new_data) {
      data = new_data;
    };

    function getData() {
      return data;
    }
  }
]);
控制器

angular.module('myApp').controller('infoController', ['$scope', '$rootScope', function($scope, $rootScope) {
    $scope.data = "hello";
    console.log($scope.data);
    $scope.data = shareInfoService.getData();
    console.log($scope.data);
  }
]);

控制台中是否有错误?您尚未将服务注入第一个控制器,并且您的服务是在不同的AppNope上定义的。控制台中没有任何错误。您使用的是同一个应用程序还是希望在两个不同的Angle应用程序之间共享数据?控制台中是否有任何错误?您尚未将服务注入第一个控制器,并且您的服务是在不同的AppNope上定义的。控制台中没有任何错误。您使用的是同一个应用程序还是希望在两个不同的Angle应用程序之间共享数据?嘿,虽然这看起来很有效,但当我刷新第二个HTML页面时。(接收信息的那个),我在浏览器控制台中得到“Hello”和“undefined”。此外,HTML页面没有显示任何内容。有没有办法解决这个问题,这样当我刷新页面时,信息不会消失?嘿,虽然这似乎是可行的,但当我刷新第二个HTML页面时。(接收信息的那个),我在浏览器控制台中得到“Hello”和“undefined”。此外,HTML页面没有显示任何内容。有没有办法解决这个问题,这样当我刷新页面时信息不会消失?
angular.module('myApp').controller('infoController', ['$scope', '$rootScope', function($scope, $rootScope) {
    $scope.data = "hello";
    console.log($scope.data);
    $scope.data = shareInfoService.getData();
    console.log($scope.data);
  }
]);