[英]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.