Eu tenho uma diretiva barFoo que tem o seguinte modelo:
<div>
....
<input ng-model="data">
</div>
Esta diretiva é usada dentro de um formulário! Agora, dentro desta diretiva eu quero fazer coisas como
element.find("input").$setValidity("bar-valid", false);
No entanto, isso não funciona. Além disso, o campo de entrada não tem um nome atributo. Existe alguma maneira de fazer isso sem um atributo "name"?
UPDATE: Uma outra solução é definir ngModel no elemento diretivo
<bar-foo ng-model="data.value"></bar-foo>
E reescreva a diretiva da seguinte forma
....
.directive("barFoo", function () {
return {
require: "ngModel",
...
link: function (scope, element, attrs, ctrl) {
ctrl.$setValidity("bar-valid", false);
}
});
Respostas:
1 para resposta № 1Dê uma olhada nesta questão: Diretiva de Validação de Formulário AngularJS $ setValidity on element
Eu vou te dar exatamente o que você precisa, incluindo código
1 para resposta № 2
Você pode chamar uma diretiva com o nome = "itAmazingName" e usá-lo no modelo de diretiva, que deve resolver seus problemas