gpt4 book ai didi

javascript - 刷新页面之前调用函数

转载 作者:行者123 更新时间:2023-11-28 06:06:46 24 4
gpt4 key购买 nike

当用户按 F5 或刷新按钮时,我需要在刷新页面之前调用一个函数,我尝试了下面的代码,但它不起作用,请建议我做错了什么,是否有更好的方法做这个。我正在使用 Anuglar 1.5 和 ui-router。

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

页面刷新时不会调用 functionToCallOnPageRefresh()。

最佳答案

您需要创建一个父状态,例如“安全”,并继承应用程序中的每个状态,该状态例如-

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 时执行某些任务(检查用户是否登录)。

在“安全”状态下,如果用户按 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;

}
}
}());

关于javascript - 刷新页面之前调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36784714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com