运行 每次加载 Angular 控制器时一个函数
Run a function every time an Angular controller is loaded
我想在每次加载 Angular 控制器时 运行 一个函数。
我发现的最佳方法是将此处理程序附加到我网站上加载的第一个控制器中:
$rootScope.$on('$stateChangeSuccess',
function(event, toState, toParams, fromState, fromParams){
myFunction();
}
);
有更好的选择吗?
如果你只想在每次加载控制器时执行一个函数,下面的就足够了。
var init=function(){
//your code goes here
}
init();
但在大多数情况下,您需要一个函数仅在加载特定页面(路由)时执行。在这种情况下,请使用以下内容。
if ($location.url() == "/your/page/url")
{
//Your function code or function call goes here
}
编辑: 根据您的具体需要,Google 分析的代码可以在 Angular $http 拦截器中高效处理。参考 Angular $http Interceptors
我更愿意将该函数移动到您 $stateProvider
的解析部分。您的状态配置可能类似于
.config(['$stateProvider', function($stateProvider) {
$stateProvider
.state('myRoute', {
url: '/myUrl',
templateUrl: '/template.html',
controller: 'MyController',
controllerAs: 'vm',
resolve: {
dummyVariable: function(MyService, $stateParams) {
MyService.functionToBeCalled();
return true;
}
}
});
我想在每次加载 Angular 控制器时 运行 一个函数。
我发现的最佳方法是将此处理程序附加到我网站上加载的第一个控制器中:
$rootScope.$on('$stateChangeSuccess',
function(event, toState, toParams, fromState, fromParams){
myFunction();
}
);
有更好的选择吗?
如果你只想在每次加载控制器时执行一个函数,下面的就足够了。
var init=function(){
//your code goes here
}
init();
但在大多数情况下,您需要一个函数仅在加载特定页面(路由)时执行。在这种情况下,请使用以下内容。
if ($location.url() == "/your/page/url")
{
//Your function code or function call goes here
}
编辑: 根据您的具体需要,Google 分析的代码可以在 Angular $http 拦截器中高效处理。参考 Angular $http Interceptors
我更愿意将该函数移动到您 $stateProvider
的解析部分。您的状态配置可能类似于
.config(['$stateProvider', function($stateProvider) {
$stateProvider
.state('myRoute', {
url: '/myUrl',
templateUrl: '/template.html',
controller: 'MyController',
controllerAs: 'vm',
resolve: {
dummyVariable: function(MyService, $stateParams) {
MyService.functionToBeCalled();
return true;
}
}
});