簡體   English   中英

在刷新頁面之前調用函數

[英]Call a function before refreshing the page

當用戶點擊F5或刷新按鈕我需要在刷新頁面之前調用一個函數,我嘗試了下面的代碼並且它沒有用,請告訴我我做錯了什么並且有更好的方法來做到這一點。 我正在使用帶有ui-router的Anuglar 1.5。

angular.module('module.name', [
]).controller('someController',['$scope', function($scope) {
    $scope.$on("$stateChangeStart", function () { 
        functionToCallOnPageRefresh();
    });
}]);

在頁面刷新時不調用functionToCallOnPageRefresh()。

你需要創建一個像'secure'這樣的父狀態,並繼承你的應用程序中的每個狀態,如同 -

angular.module('moduleName').config(['$stateProvider', '$urlRouterProvider',
    function ($stateProvider, $urlRouterProvider) {

        $stateProvider.
            state('secure', {
                url: "/",
                abstract: true,
                templateUrl: "/path/to your/ master page",
                resolve: {
                    factory: 'CheckRouting'
                }
            }).
            state('dashboard', {
                url: 'dashboard',
                templateUrl: 'path/to your /template',
                parent: 'secure',
               });

    }
]);

我在這里提到過

 resolve: {
                    factory: 'CheckRouting'
                }

其中CheckRouting里面解析屬性,是一個工廠,它將在狀態更改或按f5時執行某項任務(檢查用戶是否登錄)。

在'安全'狀態下使用'resolve'屬性來執行一個函數,如果用戶按f5或狀態改變如下 -

(function() {
    'use strict';

    angular.module('moduleName').factory('CheckRouting', ['$rootScope','$timeout' checkRouting]);

    function checkRouting($rootScope,$timeout) {

        if ( condition) { //user is loged in
            return true;
        } else {

                $timeout(function() {
                    $state.go('login');
                });

                return false;

        }
    }
}());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM