ich mit einer Lösung kam, die zu funktionieren scheint:
.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);
});
}
}
}
}]);
Der Schlüssel ist, sicherzustellen, dass die Richtlinie eine höhere Priorität als alle anderen Richtlinien zu dem Element hat und beendet, so dass andere Dir ectives arent kompiliert und verknüpft.
Vielen Dank für den Hinweis auf Attr. $ Gesetzt zu mir! Es scheint jedoch nicht, dass die Verwendung von ng-Modell funktioniert. Irgendwelche Ideen warum nicht? Eine Modifikation Ihres Plunkers zeigt dies: http://plnkr.co/edit/ad2zIbNqW800KZi2Ulxn?p=preview – MrException
@MrException, ich weiß nicht, warum es nicht funktioniert. Hier ist eine SO Frage zu diesem Thema: http://stackoverflow.com/questions/17405790/adding-ngmodel-to-input-with-a-directive –
Super @Mark, hatte ich meine Haare gezogen versuchen 'attrs. $ set ('ng-pattern') 'und nicht verstehen, warum es in html identisch aussah, aber nichts passierte. Ich wollte anmerken, dass - in meinen Schnelltests mit aktuellem Firefox und Chrome und Angular 1.0.7 zumindest - die 'Priorität: 1000' nicht benötigt wird, damit die Pattern-ng-Validierung funktioniert. – Daryn