Mümkün ve işte aynı şeyi bir girdi tablosu ile nasıl yapacağım.
tabloyu böyle bir forma sarın
O zaman bunu kullan
Tüm giriş (ler), select (s), vb içeren çok yuvalı yönergeleri olan bir form var ... Bu öğelerin tüm ng-tekrarlar ve dinamik dize değerleri eklenir.
Yönerge şu şekilde kullanılır:
<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>
Not: bir girdi tablosunu serileştirmeniz gerekiyorsa dize birleşimine dizin ekleyebilir ve dizine ekleyebilirsiniz; ben de öyle yaptım.
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
}
});
Bu, formun nerede olacağını bilmediğiniz birçok durumu ele almalıdır. Ya da iç içe formlarınız var, ancak bir nedenle bu giriş adını iki forma eklemek mi istiyorsunuz? Giriş adını eklemek istediğiniz form adını girin.
Ne istediğimi, asla bilemeyeceğim girişlere dinamik değerler atamak ve sonra sadece $ scope.myFormName. $ Geçerli çağırmak için bir yoluydu.
İstediğiniz her şeyi ekleyebilirsiniz: daha fazla tablo daha fazla form girişi, iç içe formlar, ne istersen. Girişleri doğrulamak istediğiniz form adını iletmeniz yeterlidir. Sonra form gönderirken $ scope.yourFormName. $ Geçerli olup olmadığını sorun