2014-06-24 2 views
2

<input type="date"> 필드에 포맷터를 추가하는 간단한 지시문을 구현하려고합니다. 내가 mb-date-format로 이름을 변경 할 때까지ngModelController 포맷터를 사용한 각도 지시문

myApp.directive("date-format", function (dateFilter) { 
    return { 
     restrict: "A", 
     require: "ngModel", 
     link: function (scope, element, attributes, ngModelController) { 
      ngModelController.$formatters.push(function (modelValue) { 
       return modelValue && new Date(modelValue); 
      }); 
     } 
    }; 
}); 

그것은 꽤 잘 작동 :이 지침은 것 같습니다. 나는 JS 피들을 만들었다 : http://jsfiddle.net/HB7LU/4458/. aaa, bbb, ccc 등과 같은 이름으로 제대로 작동하는 것으로 보이지만 이름을 jjj, zzz, ...으로 변경하면 작동하지 않습니다.

"dateFormat는"예에 지시 이름을 케이싱
+2

귀하의 지침에 우선 순위를 부여하십시오. 나는 확실한 메커니즘을 기억하지 못하지만 'input'지시문 앞이나 뒤에 명시 적으로 실행되도록합니다 (예 :'priority : 10' 또는'priority : -10'). 둘 이상의 지시문의 우선 순위가 같을 경우 (예 : 기본값) 각도는 사전 순으로 정렬됩니다. –

+0

예를 들어 확실히 작동합니다. 'priority : 1'은'0'이 기본 우선 순위이고'input' 지시자도'0' 우선 순위를가집니다. 감사! – kuba

답변

2

시도 낙타 : 당신의 바이올린 I 찾고이

<input type="date" ng-model="date" date-format> 
0

처럼 HTML에서 사용 그것에서 다음

myApp.directive("dateFormat", function (dateFilter) 


과 원인 일 수있는 몇 가지 문제를 발견했습니다.

  1. 입력에 date 유형을 사용하고 있습니다. 내장 된 브라우저 날짜 선택기 API는 무시하기가 매우 어렵 기 때문에 서식 지정 솔루션이 많은 브라우저에서 작동하지 않습니다.

솔루션 부 : 내가이 당신이 당신의 자신의 선택기를 롤백 할 수 있음을 의미 이해하지만, 당신이 정의를 원한다면, 당신은 것입니다

<input type="text" ng-model="date" mb-date-format>

을 텍스트로 사용자의 입력 형식을 변경 그렇게해야합니다. 의존성에 신경 쓰지 않고 요구 사항이 너무 많지 않으면 AngularUI makes a pretty extensible datepicker.

  1. 파서 기능이 전혀 작동하지 않으며 어쨌든 여기서 서식을 지정하는 데 파서가 필요하지 않습니다.

솔루션의 두 번째 부분 : 형식이 또한 당신의 필요 사항에 지시어 이름을 구현하는 포매터 기능 I modified your fiddle here에서 출력.