드롭 다운 목록에 대한 일부 지시문을 만들려고합니다 : <drop-down-list />
.지시문 내에서 양식에 대한 각도 액세스
먼저 각자에게 줄 수있는 방법을 모르겠다. <select>
. 다른 답변은 동적으로 컨트롤의 이름을 지정할 수없고 각 <select>
을 자체적으로 <form>
(또는 ng-form
)으로 감쌀 수 있습니다.
내 지침의 $scope
에 양식에 대한 액세스 권한이 없으므로 유효성 검사를 수행 할 수 없습니다. 지시문 범위에 형식이 표시되지 않는 이유가 있습니까? 각각 <select>
을 자체 양식으로 포장해야합니까?
이
는 템플릿 HTML입니다 :<div class="row">
<div class="col-md-12">
<form name="formDDL" novalidate>
<div class="col-md-6">
<label for="ddl">{{title}}</label>
</div>
<div class="col-md-6" data-ng-class="getControlStatus(formDDL.ddl)">
<select
name="ddl"
data-ng-options="i.{{keyField}} as i.{{textField}} for i in itemSource | orderBy: orderBy"
data-ng-model="model"
data-ng-required="isRequiredCallback"
class="form-control">
<option value="">{{defaultText}}</option>
</select>
<span data-ng-show="hasRequiredError(formDDL.ddl)" class="error">{{getRequiredErrorMessage()}}</span>
</div>
</form>
</div>
</div>
그리고이 지시어 코드 :
application.directive('dropDownList', ['baseUrl', function (baseUrl) {
return {
restrict: 'E',
templateUrl: baseUrl + '/Content/templates/dropdownlist.html',
transclude: false,
replace: true,
scope: {
title: '@',
orderBy: '@',
keyField: '@',
textField: '@',
defaultText: '@',
requiredMessage: '@',
model: '=',
itemSource: '=',
isRequired: '=',
enableValidation: '='
},
controller: function ($scope) {
$scope.isRequiredCallback = getCallback($scope.isRequired, false);
$scope.isValidationEnabled = getCallback($scope.enableValidation, false);
$scope.getControlStatus = function (control) {
if (!$scope.isValidationEnabled() && !control.$dirty) {
return {};
}
return {
'has-success': !control.$error.required,
'has-error': control.$error.required
}
};
$scope.hasRequiredError = function (control) {
if (!$scope.isValidationEnabled() && !control.$dirty) {
return false;
}
return control.$error.required;
};
$scope.getRequiredErrorMessage = function() {
return $scope.requiredMessage;
};
}
};
}]);
당신은 getCallback
기능을 무시할 수 있습니다 : 그것은 단지 인 바운드 값을 처리하는 부울 또는 함수.
Plunker/Fiddle에게 문제를 제공하십시오. 감사 –