2013-07-15 49 views
5

Đây có thể là một câu hỏi dễ, nhưng tôi đang gặp sự cố với this datepicker. Vấn đề là tôi đặt định dạng thành dd/mm/yyyy với thuộc tính data-date-format. Tuy nhiên, khi kiểm tra ng-model giá trị của tôi là như sau: Wed Jul 17 2013 00:00:00 GMT+0000 (Greenwich Standard Time)Giá trị định dạng không ràng buộc theo ngày tháng

Điều tôi muốn là liên kết với định dạng dd/mm/yyyy.

Làm cách nào để khắc phục sự cố này?

Đây là mã của tôi:

<label for="inputDateFrom">Frá</label> 
<div class="control-group input-append"> 
    <input type="text" ng-model="booking.Booking.DateFrom" data-date-format="dd/mm/yyyy" bs-datepicker> 
    <button type="button" class="btn" data-toggle="datepicker"><i class="icon-calendar"></i></button> 
</div> 

Cập nhật 18.07.13:

Theo câu trả lời của rGil Tôi cố gắng để sử dụng $ phạm vi $ đồng hồ.. Nó hoạt động tốt nhưng trước tiên nó nhận được ngày CORRECT (từ hàm dịch vụ getBooking()), sau đó nó thay đổi thành ngày CURRENT - không phải là ngày tháng.

mã JavaScript được như sau:

$scope.$watch('booking.Booking.DateFrom', function(v){ // using the example model from the datepicker docs 
    $scope.booking.Booking.DateFrom = moment(v).format(); 
    alert(moment(v).format()); 
}); 

$scope.$watch('booking.Booking.DateTo', function(v){ // using the example model from the datepicker docs 
    $scope.booking.Booking.DateTo = moment(v).format(); 
    alert(moment(v).format()); 
}); 

// Sækjum staka bókun 
if(bookingID != null) { 
    BookingService.getBooking(bookingID).then(function(data) { 
     $scope.booking = data.data; 
     $scope.booking.Booking.DateFrom = moment($scope.booking.Booking.DateFrom); 
     $scope.booking.Booking.DateTo = moment($scope.booking.Booking.DateTo); 
    }); 
} 

Rồi HTML của tôi là như sau:

<label for="inputDateFrom">Frá</label> 
<div class="control-group input-append"> 
     <input type="text" ng-model="booking.Booking.DateFrom" data-date-format="dd-mm-yyyy" bs-datepicker> 
     <button type="button" class="btn" data-toggle="datepicker"><i class="icon-calendar"></i></button> 
</div> 

<label for="inputDateTo">Til</label> 
<div class="control-group input-append"> 
     <input type="text" ng-model="booking.Booking.DateTo" data-date-format="dd-mm-yyyy" bs-datepicker> 
     <button type="button" class="btn" data-toggle="datepicker"><i class="icon-calendar"></i></button> 
</div> 

Trả lời

6

này có thể dễ dàng được thực hiện mà không cần plugin. Sử dụng this post bạn có thể tạo biến $ scope với định dạng chính xác.

Ví dụ:

$scope.$watch('datepicker.date', function(v){ // using the example model from the datepicker docs 
    var d = new Date(v); 
    var curr_date = d.getDate(); 
    var curr_month = d.getMonth() + 1; //Months are zero based 
    var curr_year = d.getFullYear(); 
    $scope.modDate = curr_date + "/" + curr_month + "/" + curr_year; 
    console.log($scope.modDate) 
}) 

FORKED DEMO - mở giao diện điều khiển

+0

Ồ, bạn đã thêm thuộc tính. Rất tốt! – Gaui

+0

Có thể bạn có thể giúp tôi thêm với ví dụ này mà bạn đã cung cấp cho tôi. Cảnh báo đầu tiên tôi nhận được là thông báo chính xác (từ dịch vụ getBooking()), thông báo thứ hai là ngày CURRENT. Tôi đã cập nhật bài đăng của mình. Làm ơn giúp tôi. – Gaui

10

Nhìn qua mã nguồn AngularStrap, tôi thấy rằng nếu bạn đặt (dường như không có giấy tờ) thuộc tính date-type với bất kỳ giá trị bên ngoài của "Ngày" (ví dụ: String) điều này ngăn không cho bs-datpicker trả lại ngày đã chọn làm đối tượng ngày và giải quyết vấn đề. Vì vậy, trong trường hợp này nó sẽ là:

<input type="text" ng-model="booking.Booking.DateFrom" data-date-format="dd/mm/yyyy" date-type="string" bs-datepicker> 

Thử nghiệm trên AngularStrap v0.7.4v0.7.5

+1

Giải pháp cho tôi là chỉ sử dụng 'date-type =" string "'. Nếu tôi bao gồm 'định dạng ngày' thì ngày đó không chính xác. – Nicros

2

Có nhiều cách để làm điều đó một cách thanh lịch hơn, với AngularJS. Chỉ cần sử dụng bộ lọc ngày Angular. Như thế này:

$filter('date')(date, "yy/MM/yyyy", date.getTimezoneOffset()) 

$ filter ('date') lấy bộ lọc angularjs lấy args, ngày, mẫu và múi giờ và trả về một chuỗi được định dạng tốt.

08/03/2016 
Các vấn đề liên quan