和配置塊不同,運行塊在注入器創建之后被執行,它是所有AngularJS應用中第一個被執行的方法。
運行塊是AngularJS中與main
方法最接近的概念。運行塊中的代碼塊通常很難進行單元測試,它是和應用本身高度耦合的。
運行塊通常用來注冊全局的事件監聽器。例如,我們會在.run()
塊中設置路由事件的監聽器以及過濾未經授權的請求。
假設我們需要在每次路由發生變化時,都執行一個函數來驗證用戶的權限,放置這個功能唯一合理的地方就是run
方法:
angular.module('myApp', ['ngRoute']) .run(function($rootScope, AuthService) { $rootScope.$on('$routeChangeStart', function(evt, next, current) { // 如果用戶未登錄 if (!AuthService.userLoggedIn()) { if (next.templateUrl === "login.html") { // 已經轉向登錄路由因此無需重定向 } else { $location.path('/login'); } } }); });
run()
函數接受個參數。
initializeFn
(函數)AngularJS在注入器創建后會執行這個函數。