Es ist möglich und hier ist, wie ich dasselbe mit einer Tabelle von Eingaben mache.
Wickeln Sie den Tisch in eine Form wie diese
Dann benutze einfach das
Ich habe ein Formular mit mehrfach verschachtelten Anweisungen, die alle Eingaben, Auswahlen usw. enthalten. Diese Elemente sind alle in ng-Wiederholungen und dynamischen Zeichenfolgenwerten enthalten.
So verwenden Sie die Richtlinie:
<form name="myFormName">
<nested directives of many levels>
<your table here>
<perhaps a td here>
ex: <input ng-repeat=(index, variable) in variables" type="text"
my-name="{{ variable.name + '/' + 'myFormName' }}"
ng-model="variable.name" required />
ex: <select ng-model="variable.name" ng-options="label in label in {{ variable.options }}"
my-name="{{ variable.name + index + '/' + 'myFormName' }}"
</select>
</form>
Hinweis: Sie können die Zeichenfolgenverkettung hinzufügen und indizieren, wenn Sie möglicherweise eine Tabelle mit Eingaben serialisieren müssen. was ich getan habe.
app.directive('myName', function(){
var myNameError = "myName directive error: "
return {
restrict:'A', // Declares an Attributes Directive.
require: 'ngModel', // ngModelController.
link: function( scope, elem, attrs, ngModel ){
if( !ngModel ){ return } // no ngModel exists for this element
// check myName input for proper formatting ex. something/something
checkInputFormat(attrs);
var inputName = attrs.myName.match('^\\w+').pop(); // match upto '/'
assignInputNameToInputModel(inputName, ngModel);
var formName = attrs.myName.match('\\w+$').pop(); // match after '/'
findForm(formName, ngModel, scope);
} // end link
} // end return
function checkInputFormat(attrs){
if( !/\w\/\w/.test(attrs.rsName )){
throw myNameError + "Formatting should be \"inputName/formName\" but is " + attrs.rsName
}
}
function assignInputNameToInputModel(inputName, ngModel){
ngModel.$name = inputName
}
function addInputNameToForm(formName, ngModel, scope){
scope[formName][ngModel.$name] = ngModel; return
}
function findForm(formName, ngModel, scope){
if( !scope ){ // ran out of scope before finding scope[formName]
throw myNameError + "<Form> element named " + formName + " could not be found."
}
if( formName in scope){ // found scope[formName]
addInputNameToForm(formName, ngModel, scope)
return
}
findForm(formName, ngModel, scope.$parent) // recursively search through $parent scopes
}
});
Dies sollte viele Situationen bewältigen, in denen Sie einfach nicht wissen, wo sich das Formular befindet. Oder haben Sie verschachtelte Formulare, möchten diesen Eingabenamen jedoch aus irgendeinem Grund an zwei Formulare anhängen? Geben Sie einfach den Formularnamen ein, an den Sie den Eingabenamen anhängen möchten.
Was ich wollte, war eine Möglichkeit, Eingaben, die ich nie erfahren werde, dynamische Werte zuzuweisen und dann einfach $ scope.myFormName. $ Valid aufzurufen.
Sie können alles hinzufügen, was Sie möchten: mehr Tabellen, mehr Formulareingaben, verschachtelte Formulare, was immer Sie wollen. Übergeben Sie einfach den Formularnamen, anhand dessen Sie die Eingaben überprüfen möchten. Fragen Sie dann beim Senden des Formulars, ob $ scope.yourFormName. $ Gültig ist