$ ver un objeto

Quiero ver los cambios en un diccionario, pero por alguna razón no se llama a la devolución de llamada de vigilancia.

Aquí hay un controlador que uso:

function MyController($scope) {
    $scope.form = {
        name: 'my name',
        surname: 'surname'
    }

    $scope.$watch('form', function(newVal, oldVal){
        console.log('changed');
    });
}

Aquí estáviolín.

Espero que la devolución de llamada de $ watch se active cada vez que se cambie el nombre o el apellido, pero no es así.

¿Cuál es la forma correcta de hacerlo?