2017-02-09 1 views
0

날짜가있는 GET URL을 추가하려하지만 "yyyyMMdd00"형식이어야합니다.각도 ui-sref, 날짜 입력 형식을 지정할 수 없습니다.

AngularJS - convert dates in controller

Binding value to input in Angular JS

내가 중간 스타일의 형식으로 날짜를 생성 만 할 수 있습니다 :

여기에 모든 솔루션을 시도에도 불구하고 dateFrom % 3DFri + 2월 + 24 + 2017 + 00 % 3A00 % 3A00 + GMT % 252B0000 + % 28GMT + 표준 + 시간 % 29

또는 아무 것도 표시되지 않습니다.

 <ion-content class="item-input"> 
<label class="item-input"> 
    <span class="input-label">Date From</span> 
    <input type="date" ng-model="dateFrom"> 
</label> 
<h3>{{dateFrom | date: "yyyyMMdd00"}}</h3> 

<a ui-sref="date({dateFrom:dateFrom})">Go</a> 
</ion-content> 

컨트롤러에게

 .controller("DateCtrl", function ($scope, $stateParams, dateService) { 
$scope.events = dateService.getEvents($stateParams.dateFrom).then(function (events) { 
    $scope.events = events; 

}); 

공장 :

 .factory('dateService', function ($http) { 
    var events = []; 

    return { 
     getEvents: function (date) { 
      var params = { 
       dateFrom: date 
      } 

      return $http.get('URL', { params: params }).then(function (response) { 
       events = response.data.events; 
       return response.data.events; 
      }); 

을 마지막으로 라우팅 :

HTML합니다 (H3는 내 URL에 추가 할 것을 생산)

.state('date', { 
    url: "/date/:dateFrom", 
    templateUrl: "templates/Date.html", 
    controller: "DateCtrl" 
}) 
.state('date', { 
    url: "/date/{dateFrom:dateType}", // Use type "dateType" here 
    templateUrl: "templates/Date.html", 
    controller: "DateCtrl" 
}) 

는 경로 파일이 포함 : 유형을 사용 17,451,515,
+0

어떤 버전의'ui-router'를 사용하고 있습니까? – Sangharsh

+0

버전 0.2.13을 사용하고 있습니다. – Kyle

답변

1

사용 $urlMatcherFactoryProvider.type

, 당신은 컨트롤러 등

업데이트 상태 선언에 조금 디코딩 된 개체에 액세스 할 수 있습니다 :

$urlMatcherFactoryProvider.type('dateType', { 
    encode: function(date) { 
    // Convert date object to URL format 
    var format = 'yyyyMMdd00'; 
    return $filter('date')(date, format); 
    }, 
    decode: function(dateStr) { 
    // Convert URL date to date object 
    var year = parseInt(dateStr.slice(0, 4)); 
    var month = parseInt(dateStr.slice(4, 6)); 
    var day = parseInt(dateStr.slice(6, 8)); 
    var date = new Date(year, month, day) 
    return date; 
    }, 
    is: function(item) { 
    return true; 
    } 
}); 

또한프로젝트에 이미 포함되어있는 경우 날짜를 직렬화 및 비 직렬화하는 데을 사용합니다.

+0

저는이 모든 것을 처음 접했습니다. 제대로 작동하지 않는 것 같습니다. "urlmatcher not recognized"또는 상태가 클릭시 변경되지 않습니다. 나는 사용 된 순간을 havent - 나는 그것을 보게됩니다. 고맙습니다! 참고 - 이온을 사용하고 있습니다. – Kyle

+0

라우터 구성 방법에서'$ urlMatcherFactoryProvider'를 삽입하십시오. – Sangharsh

+0

그랬습니다. 아직도 아무것도하지 않는 그것의. 안타깝게도보고 할 콘솔에 오류가 없습니다. – Kyle

관련 문제