Сброс общего значения при выходе из страницы - PullRequest
0 голосов
/ 25 марта 2019

Мне нужно поделиться некоторыми данными при перенаправлении с одной страницы на другую. Я делаю это через угловой сервис.

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);
       }
   });
...