Passando dados entre controladores no Angular JS?

Eu tenho um controlador básico que exibe meus produtos,

App.controller('ProductCtrl',function($scope,$productFactory){
     $productFactory.get().success(function(data){
           $scope.products = data;
     });
});

Na minha opinião, estou exibindo esses produtos em uma lista

<ul>
    <li ng-repeat="product as products">
        {{product.name}}
    </li>
</ul

O que eu estou tentando fazer é quando alguém clica no nome do produto, eu tenho outra visão chamada carrinho onde este produto é adicionado.

 <ul class="cart">
      <li>
          //click one added here
      </li>
      <li>
          //click two added here
      </li>
 </ul>

Então, minha dúvida aqui é, como passar esses produtos clicados do primeiro controlador para o segundo? Eu assumi que o carrinho também deveria ser um controlador.

Eu manipulo o evento click usando diretiva. Também eu sinto que eu deveria estar usando o serviço para alcançar a funcionalidade acima só não consigo descobrir como? porque carrinho será número predefinido de produtos adicionados poderia ser 5/10 dependendo de qual usuário da página é. Então eu gostaria de manter isso genérico.

Atualizar:

Eu criei um serviço para transmitir e no segundo controlador eu recebê-lo. Agora a consulta é como eu atualizo o dom? Desde a minha lista para soltar o produto é bastante codificado.

questionAnswers(18)

yourAnswerToTheQuestion