Javascript 在两个控制器angularjs之间共享数据
在angularjs中,我似乎面临着在控制器之间共享数据的问题 我有两个HTML文件,每个文件一个控制器,一个共享信息的服务和一个用于路由的常规应用程序文件 这是第一个文件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(
<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);
}
]);