Itu mungkin dan di sini adalah bagaimana saya melakukan hal yang sama dengan tabel input.
bungkus meja dalam bentuk seperti itu
Maka gunakan saja ini
Saya memiliki formulir dengan arahan multi-nested yang semuanya berisi input, pilih, dll. Elemen-elemen ini semuanya tertutup dalam pengulangan-ng, dan nilai string dinamis.
Ini adalah bagaimana menggunakan arahan:
<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>
Catatan: Anda dapat menambahkan dan mengindeks ke rangkaian string jika Anda perlu membuat serial mungkin sebuah tabel input; itulah yang saya lakukan.
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
}
});
Ini harus menangani banyak situasi di mana Anda tidak tahu di mana formulir itu berada. Atau mungkin Anda memiliki formulir bersarang, tetapi karena alasan tertentu Anda ingin melampirkan nama input ini ke dua formulir? Nah, cukup masukkan nama formulir yang ingin Anda lampirkan nama input.
Apa yang saya inginkan, adalah cara untuk menetapkan nilai dinamis ke input yang tidak akan pernah saya ketahui, dan kemudian panggil $ scope.myFormName. $ Valid.
Anda dapat menambahkan apa pun yang Anda inginkan: lebih banyak tabel input formulir, formulir bersarang, apa pun yang Anda inginkan. Cukup berikan nama formulir yang Anda inginkan untuk memvalidasi input. Kemudian pada form kirim tanyakan apakah $ scope.yourFormName. $ Valid