Có thể và đây là cách tôi làm điều tương tự với một bảng đầu vào.
bọc bàn theo hình thức như vậy
Sau đó, chỉ cần sử dụng này
Tôi có một biểu mẫu với các lệnh đa lồng nhau, tất cả đều chứa (các) đầu vào, chọn (s), v.v ... Các phần tử này đều được đặt trong các lặp lại ng và các giá trị chuỗi động.
Đây là cách sử dụng chỉ thị:
<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>
Lưu ý: bạn có thể thêm và lập chỉ mục cho nối chuỗi nếu bạn cần tuần tự hóa có lẽ một bảng đầu vào; đó là những gì tôi đã là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
}
});
Điều này sẽ xử lý nhiều tình huống mà bạn không biết biểu mẫu sẽ ở đâu. Hoặc có lẽ bạn có các biểu mẫu lồng nhau, nhưng vì một số lý do bạn muốn đính kèm tên đầu vào này vào hai biểu mẫu? Vâng, chỉ cần chuyển vào tên mẫu bạn muốn đính kèm tên đầu vào.
Những gì tôi muốn, là một cách để gán các giá trị động cho các đầu vào mà tôi sẽ không bao giờ biết, và sau đó chỉ cần gọi $ scope.myFormName. $ Hợp lệ.
Bạn có thể thêm bất cứ thứ gì bạn muốn: nhiều bảng hơn đầu vào biểu mẫu, biểu mẫu lồng nhau, bất cứ điều gì bạn muốn. Chỉ cần vượt qua tên biểu mẫu bạn muốn xác thực đầu vào. Sau đó, trên biểu mẫu gửi yêu cầu nếu $ scope.yourFormName. $ Hợp lệ