每次加载Angular控制器时运行一个函数

时间:2015-07-27 23:03:24

标签: angularjs angularjs-routing angularjs-rootscope

我希望每次加载任何Angular控制器时都运行一个函数。

我找到的最好方法是将此处理程序附加到我网站上加载的第一个控制器中:

207
217
196
176

207
220
200
179

有更好的选择吗?

2 个答案:

答案 0 :(得分:1)

如果您只是想在每次加载控制器时执行一个函数,以下就足够了。

var init=function(){
  //your code goes here
}
init();

但在大多数情况下,您只需要在特定页面(路径)的加载时执行该功能。在这种情况下,请使用以下内容。

if ($location.url() == "/your/page/url")
{
  //Your function code or function call goes here 
}

修改:根据您的特定需求,可以在Angular $ http Interceptor中有效处理Google Analytics代码。请参阅Angular $http Interceptors

答案 1 :(得分:0)

我希望将该功能移到$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;
      }
    }
  });