2015-05-04 19 views
6

Tôi có một màn hình với một lĩnh vực DATE (Ngày bắt đầu), nơi người dùng có thể nhập bất kỳ ngàyLàm thế nào để giúp bạn tiết kiệm một lĩnh vực NGÀY trong căn cứ hỏa lực sử dụng AngularFire

<label class="item item-input"> 
    <span class="input-label">Start Date</span> 
    <input type="date" ng-model="currentItem.OpenDate"> 
</label> 

tôi thêm vào phần sau đây để sự kiện click vào nút Save của

console.log("Normal date " + $scope.currentItem.OpenDate); 

Giao diện điều khiển hiển thị ngày tháng sau

Normal date Fri May 01 2015 00:00:00 GMT-0400 (Eastern Daylight Time) 

đây là sự kiện đẩy

$scope.data.accounts.push({ 'AccountName': $scope.currentItem.AccountName, 'StartBalance': $scope.currentItem.StartBalance, 'OpenDate': $scope.currentItem.OpenDate, 'AccountType': $scope.currentItem.AccountType }); 

TUY NHIÊN, ngày $scope.currentItem.OpenDate là không nhận được lưu vào căn cứ hỏa lực, phần còn lại của dữ liệu được tiết kiệm đúng cách. Tôi đang thiếu gì?

Trả lời

22

Rất tiếc, bạn không bao gồm mã khởi tạo thuộc tính OpenDate. Nhưng có vẻ như bạn đang cố gắng viết đối tượng JavaScript Date vào Firebase. Các Firebase documentation xác định rằng nó hỗ trợ các loại sau:

đối tượng, mảng, chuỗi, số, boolean, hoặc null

Để lưu trữ giá trị của Date, bạn sẽ phải chuyển nó sang một loại được hỗ trợ. Ví dụ.

$scope.data.accounts.push({ 
    'AccountName': $scope.currentItem.AccountName, 
    'StartBalance': $scope.currentItem.StartBalance, 
    'OpenDate': $scope.currentItem.OpenDate.toString(), 
    'AccountType': $scope.currentItem.AccountType 
}); 

Hoặc cách khác:

'OpenDate': $scope.currentItem.OpenDate.getTime(), 
+1

Nói chung, 'getTime()' sẽ phổ biến hơn, dễ sử dụng hơn với các truy vấn và sắp xếp, và tổng thể là một giải pháp chức năng hơn. – Kato

+0

Điều đó có hiệu quả đối với tôi. Cảm ơn nhiều. Là một newbie không phải là vui vẻ đôi khi, nhưng phải di chuyển về phía trước! –

+0

@Kato Đồng ý, Im đang tìm kiếm truy vấn phạm vi ngày. –

13

Tôi chỉ muốn ném ra một giải pháp có thể mạnh mẽ hơn có thể hữu ích cho những ai quan tâm đến các múi giờ.

Tôi tin rằng giải pháp hợp lệ là lưu trữ ngày của bạn dưới dạng ISO-8601 chuỗi được định dạng. Nếu bạn đọc bài báo Wikipedia được liên kết, bạn sẽ thấy rằng "Thứ tự từ điển của biểu diễn do đó tương ứng với thứ tự thời gian, ngoại trừ các biểu diễn ngày liên quan đến các năm âm."

Tài liệu Firebase nêu rõ rằng 'Strings [...] are sorted lexicographically in ascending order.', miễn là bạn đang xử lý các năm dương, bạn sẽ có thể thực hiện tìm kiếm thời gian nâng cao trong khi duy trì thông tin múi giờ.

+1

Tuyệt vời. Câu trả lời của bạn thúc đẩy khả năng đọc và chức năng, thay vì hy sinh khả năng đọc như Frank đã đề xuất! – gustavohenke

Các vấn đề liên quan