เป็นไปได้และนี่คือวิธีที่ฉันทำสิ่งเดียวกันกับตารางอินพุต
ห่อตารางในรูปแบบเช่นนั้น
จากนั้นใช้สิ่งนี้
ฉันมีรูปแบบที่มีคำสั่งหลายซ้อนที่ทั้งหมดประกอบด้วยอินพุต (s) เลือก (s), ฯลฯ ... องค์ประกอบเหล่านี้ทั้งหมดอยู่ใน 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. $ ถูกต้อง
คุณสามารถเพิ่มสิ่งอื่น ๆ ที่คุณต้องการได้: เพิ่มตารางแบบฟอร์มให้มากขึ้น, แบบฟอร์มซ้อนกัน, ทุกอย่างที่คุณต้องการ เพียงส่งชื่อแบบฟอร์มที่คุณต้องการตรวจสอบความถูกต้องของอินพุต จากนั้นในแบบฟอร์มการส่งถามว่า $ scope.yourFormName ของคุณ $ ถูกต้อง