저는 입력에 대한 몇 가지 확장 기능을 구축했으며 지시문에서 ngModelController를 사용하여 기존 ngModel 바인딩을 확장하는 최선의 방법은 틀림 없습니다. "require"속성을 사용하여 다른 지시자의 컨트롤러를 요구할 수 있습니다. The documentation for ngModelController is here
이렇게하면 모델 값을 가져 오거나 설정할 수 있으며 필요에 따라 유효성 검사 동작을 확장하거나 바꿀 수 있습니다. 이제는 AngularJS 입력 지시문을 함께 사용하여 확장하기 때문에 AngularJS의 입력 지시문을보고이 작업의 예를 살펴볼 수도 있습니다. 또한 ngFormController 접미어로 전체 양식의 부모로 사용할 수 있습니다. 이것은 나를 잡기 위해 오래 걸렸으므로 인내심을 가져라. 그러나 이것을하는 것이 훨씬 좋은 방법이다.
여기에서는 범위를 분리하지 않아야하며, 까다로워 질 수 있습니다. 항상 다른 지시문과 잘 어울리지는 않습니다. 따라서 일반적으로 새 요소 나 자체 지시문이 하나만있는 곳에서만 사용하십시오. 나는 사용자 정의 입력이 (우리가 +/- 버튼을 추가 사용자 입력을 구축 그들이 무엇에 따라 꽤 까다로운 얻을 수있는 지침 디자인 당신이 할 수있는만큼 익숙해 추천
return {
restrict: 'E',
template: tpl,
replace: true,
require: 'ngModel',
link: function(scope, element, attrs, ngModelController) {
// Use attrs to access values for attributes you have set on the lement
// Use ngModelController to access the model value and add validation, parsing and formatting
// If you have an attribute that takes an expression you can use the attrs value along with $scope.$watch to check for changes and evaluate it or the $parse service if you just want to evaluate it.
}
: 나는 이런 식으로 뭔가를 디자인 할 것이다 숫자를 백분율, 통화 또는 쉼표로 숫자를 입력하는 동안 서식을 지정하는 것). 이외에도 이러한 유용한 ngModelController의 문서에서 검토하기 :
지시어의 범위에서'ng-required'와'ngRequired'를 대신 사용해보십시오. – jpmorin
링크 함수에서'attrs.required' 속성 안에 무엇이 있는지 살펴보고 뭔가 있는지 확인할 수 있습니다. – jpmorin
분리 범위가 필요한 이유가 있습니까? 더 단순 해 보일 수도 있지만 종종 그렇지 않습니다. "ngModelController"에 대한 요구 사항을 취하고 "attrs"와 $ scope를 사용하는 다른 제안을 제안합니다. 동적 바인딩이 필요한 경우 $ watch. 더 완벽한 솔루션을 원한다면 알려주십시오. jsFiddle을 게시하거나 도와 드리겠습니다. –