mi si avvicinò con una soluzione che sembra funzionare:
.directive('tag', ['$compile', function($compile) {
return {
priority: 1000,
terminal: true,
compile: function(telement, attrs) {
attrs.$set('tag', null);
attrs.$set('ngMaxlength', '10');
attrs.$set('ngPattern', '/[\\w\\d]+/');
var link = $compile(telement);
return function($scope, $element) {
link($scope, function(clonedElement) {
$element.replaceWith(clonedElement);
});
}
}
}
}]);
La chiave è assicurandosi che la direttiva abbia una priorità più alta di tutte le altre direttive sull'elemento e che termini, così che altre dir ectives non compilati e collegati.
Grazie per aver segnalato attrs. $ Impostato su di me! Tuttavia, non sembra che usarlo per impostare i lavori di ng-model. Qualche idea, perché no? Una modifica del tuo plunker che mostra questo: http://plnkr.co/edit/ad2zIbNqW800KZi2Ulxn?p=preview – MrException
@MrException, non so perché non funzioni. Ecco una domanda su questo problema: http://stackoverflow.com/questions/17405790/adding-ngmodel-to-input-with-a-directive –
Super @Mark, mi stavo strappando i capelli cercando "attrs". $ set ('ng-pattern') 'e non capisco perché sembrava identico in html ma non stava accadendo nulla. Volevo notare che, nei miei rapidi test con Firefox corrente e Chrome e Angular 1.0.7 almeno, la 'priority: 1000' non sembra essere necessaria per il pattern ng-validation per funzionare. – Daryn