Мне нужно поделиться некоторыми данными при перенаправлении с одной страницы на другую. Я делаю это через угловой сервис.
var ProductionControl = angular.module('ProductionControl', ['ngRoute', 'ngGrid', 'ngAnimate', 'angularFileUpload', 'ui.bootstrap', 'toaster']);
// configure our routes
ProductionControl.value("Company", { Name: "" });
ProductionControl.value("FromPage", { Name: "" });
ProductionControl.value("loggedUserName", { Name: "" });
ProductionControl.value("Version", { Name: "" });
ProductionControl.constant('RoutingStatus', {
New: 1,
Certified: 2,
UnderDevelopment: 3,
Initial: 4
});
ProductionControl.service('PmsDataSharingService', function () {
var sharedData;
this.setSharedData = function (d) {
sharedData = d;
}
this.getSharedData = function () {
return sharedData;
}
});
я устанавливаю данные вот так
В контроллере:
var objectSent = {
BatchNo: $scope.BatchNo,
RoutingStageId: $scope.RoutingStageId,
LineId: $scope.LineId,
PartNumber: $scope.PartNumber
}
PmsDataSharingService.setSharedData(objectSent);
window.location.href = '#EquipmentSetup';
я получаю такие данные
в другом контроллере
var objectSent = PmsDataSharingService.getSharedData();
if (!$.isEmptyObject(objectSent)) {
///
/// do something
///
Теперь мне нужно очистить эти общие данные при выходе из этой страницы. Как я могу это сделать?
как я могу узнать, что пользователь собирается покинуть страницу? там в любом случае?
я пробовал это, но не работает
В приложении. Js
ProductionControl.config(function ($locationProvider, $routeProvider) {
/// routing configs
})
.run(function ($rootScope, $location, Company) {
// register listener to watch route changes
$rootScope.$on("$routeChangeStart", function (event, next, current) {
if (next.templateUrl != "Partials/EquipmentSetup.html") {
//Redirection to login not required
var objectSent = {};
PmsDataSharingService.setSharedData(objectSent);
}
});
получает ошибку консоли: PmsDataSharingService не определен.
EDIT:
Это сработало, когда я поместил функцию $ on в контроллер, где я использую общее значение
$rootScope.$on("$routeChangeStart", function (event, next, current) {
if (next.templateUrl != "Partials/EquipmentSetup.html") {
//Redirection to login not required
var objectSent = {};
PmsDataSharingService.setSharedData(objectSent);
}
});