Como reutilizar um controlador para 2 vistas diferentes?

Eu defini um controlador e aplico-o a 2 visualizações com pequenas diferenças.

Código angular:

app.controller('MyCtrl', function($scope) {
   $scope.canSave = false;
   $scope.demo = {
      files : [{
         filename: 'aaa.html',
         source: '<div>aaa</div>'
      }, {
         filename: 'bbb.html',
         source: '<div>bbb</div>'
      }]
   }
   $scope.newFile = function(file) {
       $scope.demo.files.push(file);
   }
   $scope.$watch("demo.files", function(val) {
       $scope.canSave = true;
   }, true);
});

Ver 1:

<div ng-controller="MyCtrl"></div>

Ver 2:

<div ng-controller="MyCtrl"></div>

O código de exemplo é muito simples, mas há muito código e lógica no meu projeto real.

A Visão 1 e 2 têm quase os mesmos recursos, apenas com algumas diferenças, mas eu preciso escrever algum código para cada um deles no controlador.

Eu não quero criar dois controladores diferentes para eles, porque eles têm mais da mesma lógica. Eu não quero mover a lógica para um serviço para compartilhá-lo entre os dois controladores, porque a lógica não é tão comum para ser um serviço.

Existe alguma outra maneira de fazer isso?

questionAnswers(4)

yourAnswerToTheQuestion