vi mostro un'esempio:

io creo la rotta per i contact

app.js
codice:
angular
  .module('angularApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch'
  ])
  .config(function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl'
      })
        .when('/about', {
          templateUrl: 'views/about.html',
          controller: 'AboutCtrl'
        })//=================== nuova rotta con controller ===============
        .when('/contact', {
          templateUrl: 'views/contact.html',
          controller: 'ContactCtrl'
        })
      .otherwise({
        redirectTo: '/'
      });
  });
quindi nella cartella controllers creo il file contact.js e nelle viste inserisco il file contact.html, rispettando naming suggerito, pensavo ci fosse qualche autoassociazione, ma ho vari errori che indicano nella vista che il controller "ContactCtrl" non è definito:

controllers/contact.js
codice:
angular.module('angularApp')
    .controller('ContactCtrl', function ($scope) {
        $scope.list=[
            {name:"pippo"},
            {name:"pluto"}
        ];
        $scope.add=function(dato1){
            $scope.list.push(dato1);
            $scope.dato1={};
        };
    });
view/contact.html

codice HTML:
<ul ng-repeat="item in list">
    <li>{{item.name}}</li>
</ul>

<form ng-controller="ContactCtrl">
    <div>
        <input id="nome" ng-model="dato">
    </div>
    <div>
        <button id="salva" ng-click="add(dato)">salvami</button>
    </div>
</form>
perchè per main.html e about.html esiste un'autoassociazione e per contact no???