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.