가능하며 여기에 입력 테이블로 동일한 작업을 수행하는 방법이 있습니다.
테이블을 이렇게 포장하십시오
그런 다음 사용하십시오
입력, 선택 등을 포함하는 다중 중첩 지시문이있는 양식이 있습니다 ...이 요소는 모두 ng-repeats 및 동적 문자열 값으로 묶습니다.
지시문을 사용하는 방법은 다음과 같습니다.
<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>
참고 : 입력 테이블을 직렬화해야하는 경우 문자열 연결에 추가하고 색인을 작성할 수 있습니다. 그것이 내가 한 일입니다.
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
}
});
이것은 양식의 위치를 모르는 많은 상황을 처리해야합니다. 또는 중첩 된 양식이 있지만 어떤 이유로이 입력 이름을 두 개의 양식에 첨부하고 싶습니까? 입력 이름을 첨부 할 양식 이름을 전달하십시오.
내가 원했던 것은 결코 알 수없는 입력에 동적 값을 할당 한 다음 $ scope.myFormName. $ valid를 호출하는 방법이었습니다.
더 많은 테이블에 더 많은 양식 입력, 중첩 된 양식 등 원하는 것을 추가 할 수 있습니다. 입력을 확인하려는 양식 이름을 전달하십시오. 그런 다음 양식 제출시 $ scope.yourFormName. $ valid 여부를 묻습니다.