AngularJS服务$ routeChangeStart

时间:2015-10-31 08:34:40

标签: angularjs

我在每个控制器中都有以下工作。

$scope.$on('$routeChangeStart', function(event){
    $scope.closeitup();
});

在每个控制器中,我都有一个closeitup()函数可以执行不同的操作,但名称相同。

如何将上述$scope.$on移动到将被触发的服务并调用控制器closeitup()

希望问题足够清楚

2 个答案:

答案 0 :(得分:0)

myModule.factory('closeitupOnRouteChangeStart', function() {
  return function($scope) {
    $scope.$on('$routeChangeStart', function() {
      $scope.closeitup();
    });
  };
}); 

并在控制器中:

myModule.controller('SomeCtrl', function($scope, closeitupOnRouteChangeStart) {
  closeitupOnRouteChangeStart($scope);
});

我不确定这会使代码更清晰,更具可读性。

答案 1 :(得分:0)

使用$ controller继承怎么样?

app.controller('ParentCtrl ', function($scope) {
  $scope.$on('$routeChangeStart', function(event){
    $scope.closeitup();
  });
});

app.controller('ChildCtrl', function($scope, $controller) {
  $controller('ParentCtrl', {$scope: $scope});
});

我自己没有尝试过,如果这种做法具有误导性,那就很抱歉。