AngularJS: Como compartilhar funções e variáveis de escopo com outros controladores

Eu tenho vários controladores no meu aplicativo, onde tenho algum código duplicado como:

$scope.alert = null;

$scope.addAlert = function (message) {
    $scope.alert = { type: 'danger', msg: message };
};

$scope.clearAlerts = function () {
    $scope.alert = null;
};

Qual é a maneira recomendada de compartilhar essas funções e variáveis de escopo no AngularJS? Usando herança de controlador?

questionAnswers(2)

yourAnswerToTheQuestion