Tôi đang sử dụng góc UI Bootstrap datepicker: https://angular-ui.github.io/bootstrap/#/datepickerParse ngày chuỗi đối tượng Date khi tải kiễu góc UI Bootstrap datepicker
Khi tôi làm cho hình thức sử dụng dữ liệu nhận được từ máy chủ, có vấn đề với các lĩnh vực datetime. datepicker đầu vào của tôi trông như thế này:
<form name="itemForm">
<input type="datetime" class="form-control" id="startedAt" name="startedAt"
ng-model="item.startedAt"
ng-click="open($event, 'startedAt')"
uib-datepicker-popup="yyyy-MM-dd"
is-open="datepickers.startedAt"
/>
</form>
My server trả về datetime phản ứng như JSON chuỗi:
{
...
startedAt: "2015-05-29T02:00:00+0200"
}
Khi tôi gán dữ liệu đáp ứng với mô hình $scope.item = response;
, datepicker trường nhập được trả lại một cách chính xác (đúng ngày là được chọn và được định dạng đúng theo định dạng mà tôi đã chọn). Vấn đề là việc xác nhận không vượt qua. Tôi nhận được:
itemForm.startedAt.$invalid == true
tôi nhận thấy rằng dữ liệu ràng buộc với lĩnh vực datepicker nên Date
đối tượng và không dây (khi tôi chọn ngày mới từ datepicker, $scope.item.startedAt
là một Date
)
tôi quản lý để làm việc xung quanh vấn đề này và làm điều này trong bộ điều khiển:
$scope.item = response;
$scope.item.startedAt = new Date($scope.item.startedAt);
Nó hoạt động theo cách này ... Nhưng tôi không muốn chuyển đổi thủ công chuỗi ngày mỗi khi tôi nhận được phản hồi từ máy chủ. Tôi cố gắng để tạo ra một chỉ thị, mà tôi có thể gán cho lĩnh vực datepicker đầu vào để nó chuyển đổi ng-model
cho tôi:
.directive("asDate", function() {
return {
require: 'ngModel',
link: function (scope, element, attrs, modelCtrl) {
modelCtrl.$formatters.push(function (input) {
var transformedInput = new Date(input);
if (transformedInput != input) {
modelCtrl.$setViewValue(transformedInput);
modelCtrl.$render();
}
return transformedInput;
});
}
}
})
Vâng nó hoạt động, bởi vì bây giờ tôi có thể nhìn thấy Date
đối tượng, khi tôi ra mô hình theo quan điểm của tôi : {{item.startedAt}}
. Tuy nhiên vẫn còn xác thực không thành công! Tôi nghi ngờ đây là một số vấn đề với tôi hiểu làm thế nào dữ liệu chảy giữa mô hình và xem, và làm thế nào giao diện người dùng Bootstrap móc vào nó.
Ngoài ra khi tôi thay đổi chỉ thị của tôi $formatters.push
-$formatters.unshift
, xác nhận hoạt động OK, nhưng datepicker không định dạng datetime của tôi (insted của độc đáo formattet yyyy-MM-dd
tôi thấy ISO chuỗi bên trong đầu vào)
Aww người đàn ông này, chúng tôi đang gặp vấn đề chính xác cùng here !!! –
@VictorParmar hiện tôi đang làm điều này theo cách - chuyển đổi chuỗi phản ứng thành đối tượng Ngày khi nhận từ máy chủ. Và chuyển đổi đối tượng Date thành chuỗi khi gửi đến máy chủ. Tất cả điều này được thực hiện trong bộ điều khiển góc bằng tay. Có lẽ tôi sẽ trích xuất logic này như dịch vụ Góc, nhưng tôi không nghĩ rằng nó có thể làm với chỉ thị – rsobon
yeah tham gia câu lạc bộ - chúng tôi đã làm điều tương tự :) –