동적으로 이름을 지정하려는 입력 요소가 있지만 지금까지 각도 js를 사용하여 운이 없었습니다.
둘 다
<input type="text" name="resource.Name" ng-model="resource.Value" ng-required="resource.IsRequired">
...도 아니다
<input type="text" name="{{resource.Name}}" ng-model="resource.Value" ng-required="resource.IsRequired">
나를 위해 작동합니다. 이름 속성에 액세스하려고하면 항상 포함 된 값 대신 resource.Name으로 반환됩니다. 이 입력 컨트롤의 이름을 지정하려는 주된 이유는 유효성 검사입니다. 사용자가 필드에 텍스트를 입력하지 않으면 어떤 텍스트 상자가 필요한지 알려주고 싶습니다. 해당 목적으로 사용할 수있는 각도 지시문이 있으면 사용할 준비가 된 것입니다.
누구든지 이것을 달성하는 방법을 말해 줄 수 있습니까?
내 유효성 검사 기능은 다음과 같습니다.
window.resourcesValidation = function ($scope, $rootScope, $alert) {
var subscriptions = $scope.scopeData.Subscriptions;
var isValidated = true;
if ($scope.resourceDataForm && $scope.resourceDataForm.$error && $scope.resourceDataForm.$error.required) {
var missingFields = [];
angular.forEach($scope.resourceDataForm.$error.required, function (value, key) {
isValidated = false;
missingFields.push("-" + value.$name);
});
$alert.error("Please fill in the all required fields.\r\n" + missingFields.join("\r\n"));
}
if (isValidated)
$scope.saveChanges(subscriptions);
return isValidated;
};
매우 유사한 문제에 대한 또 다른 답변을 인용합니다.
이는 컨트롤의 이름 (부모 양식에 등록 된 이름)이의
ngModelController
인스턴스화 중에 검색 되기 때문에 발생 하며, 문서에 따라 사전 연결 단계 * 전에 발생합니다 (아직 보간 없음).
즉, 유효성 검사 forms.$error
는 해당 양식에 등록 된 컨트롤에 바인딩 된 개체에 의존 합니다.
컨트롤 ngModelController
은 부모 폼에 컨트롤을 등록하고 사전 연결 단계에서 인스턴스화됩니다 (이름 표현식이 아직 보간되지 않은 경우).
이 문제는 부모 형식으로 컨트롤을 수동으로 등록하는 사용자 지정 지시문으로 해결할 수 있지만 실제 이름이 결정된 후에 만 해당됩니다 (name-expression을 삽입 한 후).
여기 에서 전체 답을 찾을 수 있습니다 . 작동하는 솔루션에 대한 UPDATE 2 섹션을
찾으십시오 .
(이것은 작동 데모에 대한 링크 입니다.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다