2016-10-04 3 views
0

md-datepicker (각도 재질)로 렌더링 할 수 있도록 날짜 문자열을 Date 개체로 변환해야하는 많은 API가 반환되었습니다.md-datepicker의 렌더링시 문자열을 날짜로 변환

처음에는 각 서비스에서이 작업을 수행했습니다. 실제로 각 서비스에서 다른 서비스를 호출하여 문자열을 날짜로 변환했지만 유지 관리가 어려워졌습니다.

그래서 md-datepicker 지시문을 확장하여이 작업을 수행하려하지만 값을 수정하는 방법을 모릅니다. 각 사용법마다 다른 상위 컨트롤러가 있습니다. 여기

내가있어 무엇 :

.directive('customDatePicker', function(DatesService) { 
    return { 
     restrict: 'A', 
     require: 'mdDatepicker', 
     scope: { 
      date: '=' 
     }, 
     link: function(scope, element, attrs, controller, transcludeFn) {    
      // access value in scope here 
      console.log(scope); 
     } 
    } 
}) 

편집 - task.html

<md-datepicker custom-date-picker date="TaskDetailCtrl.task.start_date" ng-model="TaskDetailCtrl.task.start_date"> 
</md-datepicker> 

내가 분리 범위를 사용하여 생각 나는 수있을 것 app.js 값을 더 쉽게 얻을 수 있습니다. 그리고 어떤 컨트롤러가 사용되었는지는 중요하지 않습니다 (스코프 옵션이 없으면 값을 볼 수 있지만 컨트롤러의 이름을 알아야합니다). 불행하게도

,

I get a Multiple Directive Resource Contention Error. 이것에 대한 더 나은 솔루션이 있습니까?

+0

를 통해 포맷터를 추가 (<시작일 소스>)? 귀하의 컨트롤러에 – joyBlanks

+0

하지만 같은 컨트롤러와 서비스를 여러 번 걸쳐 중복해야합니다. 작업 목록, 단일 작업, 이동/업데이트 작업, 날짜 변환이 필요한 기타 리소스가 있습니다. – DJC

+0

당신의 지시어로'customDatePicker'보다는'mdDatepicker'라는 이름을 선택하고 나머지는 모두 똑같은 범위를 유지하고 무슨 일이 일어나는지 확인해야하며'E '로 제한합니다. – joyBlanks

답변

1

그냥 당신이 TaskDetailCtrl.task.start_date = 새로운 일을 할 캔트 ATTR 지시

.directive('myDate', function(){ 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function(scope, iElem, iAttrs, ngModelCtrl){ 
      ngModelCtrl.$formatters.unshift(function(modelValue){ 
       return modelValue && new Date(modelValue); 
      }); 
     } 
    }; 
}) 
관련 문제