AngularJS Перехват и расширение контроллера $scope

Существует много функций многократного использования, которые я определил в своем приложении, которые использует контроллер EVERY с переменной $scope. Вместо того, чтобы мне каждый раз создавать общую службу, есть ли способ расширить переменную $scope, чтобы я мог повсюду иметь расширенный код?

Что-то вроде:

//I've tested this out and it doesn't work, but this is what I want to do.
angular.module('App',[]).config(['$scopeProvider',function($scope) {
  $scope.method1 = function() { ... };
  $scope.method2 = function() { ... };
}]);

Затем позже:

var HomeCtrl = function($scope) {
  $scope.method1();
};

Возможно ли это? Или мне нужно создать общую услугу, а затем расширить область действия $для первой строки каждого контроллера?

Ответ 1

Вместо .config попробуйте .run, это будет делать именно то, что вы хотите.

angular.module('App', []).run(['$rootScope', function($rootScope) {
  $rootScope.foo = function() {
     alert("WIN!");
  };
}]);

angular.module('App').controller('HomeCtr', ['$scope', function($scope) {
  $scope.foo(); #will call the alert
}]);

ПРИМЕЧАНИЕ Я использовал module.controller только потому, что мне нравится, var HomeCtrl = function($scope) { будет иметь тот же эффект.