'time :'이 (가) '14 : 00 : 00'과 같은 형식의 모델이 있습니다. angle-boostrap의 timepicker를 사용하고 있지만 JS 날짜 객체 또는 ISO datetime 문자열이 필요합니다.Angular JS ngModel : 변형 데이터
필자가 가장 먼저 생각한 것은 $ parser/$ formatter를 ngModel 컨트롤러에 추가하여 우리가 필요로하는 형식으로 변환하는 방식으로 변환하는 지시문을 작성하는 것이었다. 이것은 출력을 위해 매끄럽게 작동하지만 입력을 위해 작동하지 않습니다. 당신이 바이올린 12시 0분 0초을 열 때 내가 캔 여기 http://jsfiddle.net/HB7LU/1820/
myApp.directive('timespan',function($filter){
var dateFilter = $filter('date');
function parser(data){
return dateFilter(data,'HH:mm:ss');
};
function formatter(data){
var converted = '2000-01-01T' + data + '-06:00';
return converted;
};
return {
require: 'ngModel',
link:function(scope,element,attrs,ctrl){
ctrl.$parsers.unshift(parser);
ctrl.$formatters.unshift(formatter);
}
};
});
바이올린을했습니다
은 timepicker에 의해 반영되지 않습니다. 콘솔을 보면 ngModel의 형식이 잘못되었다고 불평합니다. 선택 도구로 시간을 변경하면 $ scope.myModel.time이 올바른 형식으로 표시됩니다.
타임 피커에 도달하기 전에 ngModel을 올바른 형식으로 가져 오려면 어떻게해야합니까?
포매터 체인이 렌더되지 않습니다. 포매터 체인은 $ watch (ngModelWatch)에 있으며 모든 다이제스트에서 실행됩니다. 그러나 timepickers는 viewValue 대신 modelValue를 사용하면 문제를 일으키는 원인이 될 수 있습니다. 0.8.0을 사용하기 때문에 viewValue를 사용하기 위해 앵귤러 부트 스트랩을 수정했으며 현재 예상대로 작동합니다. Thx – Grummle
고마워. 답변을 업데이트했습니다. –