AngularJS - ¿Es posible cambiar el valor del atributo ngModel en la directiva en enlace o compilación?

Estoy tratando de crear una directiva que agregue un atributo ngModel a una etiqueta basada en el valor del atributo. Por ejemplo:

angular.module('myModule').
  directive('myDirective', function() {
    return {
      link: function(scope, elem, attrs) {
        var modelName = 'myPrefix.' + attrs.name;
        attrs.$set('ngModel', modelName);
      }
    };
  });

Para que este html:

<input name="foo" my-directive></input>

se compila en

<input name="foo" ng-model="myPrefix.foo" my-directive></input>

Toma el nombre de la entrada, adjunta un prefijo y establece el atributo ngModel a ese valor.

Cuando trato de hacer esto en la función de enlace, parece que elinput no se está registrando con el formController, por lo queform.foo devuelve indefinido.

¿Es posible lograr lo que estoy tratando de hacer?

EDITAR:

Parece que elngModel el atributo se está configurando en el HTML, pero no se está registrando con el formulario, o el ngModelController no está siendo instanciado. Si miro el valor dengModel en el ámbito, no cambia cuando modifico la entrada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta