Я использую Angularjs версии 1.5 для проверки входов в моей форме.Угловое ng-обязательное не работает с пользовательской директивой
- нг-требуется используется для проверки всех входных требуется
Однако, он не работает с пользовательской директивы, которая делает комбо. Комбо получает элементы на основе переданного ему параметра с именем «listId». Затем он выполняет итерацию на «lookupItems», используя ng-repeat. Я думаю, что чего-то не хватает, как ngModel. Почему и как его реализовать?
Комбо директива:
app.directive('combo', function($http) {
return {
restrict: 'AE',
template: '<div class="input-group"> <select ng-model="selectedItem">' +
'<option ng-repeat="option in lookupItems" value={{option.ListValueID}}>{{option.Translation.Value}}</option></select>' +
' {{selectedItem}} </div>',
replace: true,
scope: {
listId: '=',
defaultItem: '=',
selectedItem: '='
},
controller: function($scope) {
$http({
method: 'GET',
url: '/home/listvalues?listid=' + $scope.listId
}).then(function(response) {
$scope.lookupItems = response.data;
}, function(error) {
alert(error.data);
});
},
link: function(scope, element, attrs) {}
};
});
Вид HTML: итерация над атрибутами, который содержит тип управления для визуализации, то его набор нг-требуется логическое значение на основе «атрибута. Обязательный ", который является истинным.
<form name="profileAttributesForm" ng-controller="metadataCtrl" class="my-form">
<div ng-repeat="a in attributes">
<div ng-if="a.DataType == 1">
<input type="text" name="attribute_{{$index}}" ng-model="a.Value" ng-required="a.Required" />
<span ng-show="profileAttributesForm['attribute_{{$index}}'].$invalid">Enter a Text</span> text : {{a.Value}}
</div>
<div ng-if="a.DataType == 4">
<div combo list-id="a.LookUpList" name="attribute_{{$index}}" selected-item="a.Value" ng-required="a.Required"></div>
<span ng-show="profileAttributesForm['attribute_{{$index}}'].$invalid">lookup Required</span> Value from lookup: {{a.Value}}
</div>
</div>
</form>
Пример атрибутов ($ scope.attributes), который итерировать над в форме, я обеспечиваю его только для целей иллюстрации:
[{
"AttributeID": 1,
"DataType": 4,
"NodeID": 0,
"Name": "Name",
"Description": null,
"LookUpList": 1,
"SortAscending": false,
"Required": true,
"DefaultValue": "1",
"Order": 1,
"Value": ""
}, {
"AttributeID": 3,
"DataType": 1,
"NodeID": 0,
"Name": "Job Title",
"Description": null,
"LookUpList": 0,
"SortAscending": false,
"Required": true,
"DefaultValue": null,
"Order": 2,
"Value": ""
}, {
"AttributeID": 4,
"DataType": 1,
"NodeID": 0,
"Name": "Email",
"Description": null,
"LookUpList": 0,
"SortAscending": false,
"Required": true,
"DefaultValue": null,
"Order": 3,
"Value": ""
}]
Thanks @Cosmin. Можете ли вы предоставить ссылку или пример для комплексного решения, в котором описывается, как его реализовать? – Coding
@ h.salman Конечно! Я отредактировал свой ответ и добавил кучу статей, которые могут вам помочь. –