Saya memiliki masukan yang didefinisikan sebagai
<input class="datepicker" type="text" ng-model="clientForm.birthDate" />
Yang dicurangi untuk ditampilkan di tempat lain pada halaman:
<tr>
<th>Birth Date</th>
<td>{{client.birthDate|date:'mediumDate'}}</td>
</tr>
Ketika halaman memuat tanggal lahir dengan baik diformat sebagai sesuatu seperti Dec 22, 2009
. Namun, ketika saya melihat ke dalam saya, <input>
itu ditunjukkan seperti Tue Dec 22 2009 00:00:00 GMT-0800 (Pacific Standard Time)
yang saya kira adalah bagaimana JS menjadikan Date
objek sebagai string.
Pertama, bagaimana cara memberi tahu Angular untuk menunjukkan tanggal di <input>
sebagai sesuatu seperti 12/22/2009
? Saya tidak bisa menerapkan |filters
di dalam ng-model
atribut.
Kedua, segera setelah saya mengedit tanggal, bahkan menyimpannya dalam format aslinya, teks saya yang lain (di dalam <td>
) tampaknya tidak |date
lagi menerapkan filter; itu tiba-tiba mengubah format agar sesuai dengan input textbox. Bagaimana cara menerapkan |date
filter setiap kali model berubah?
Pertanyaan-pertanyaan Terkait:
Date()
fungsi js standar :$scope.departDate = new Date(); $scope.departTime = $scope.departDate.toTimeString().slice(0, 5);
Dan tidak perlu filter lain atau solusi rumit di AngularJS IMO.Jawaban:
Gunakan validasi kustom dari formulir http://docs.angularjs.org/guide/forms Demo: http://plnkr.co/edit/NzeauIDVHlgeb6qF75hX?p=preview
Direktif menggunakan formaters dan parser dan MomentJS )
sumber
var dateFormat = attrs.moMediumDate;
dan tidakvar dateFormat = attrs.moDateInput;
moMediumDate sepertinya tidak disetel di mana pun jadi jika input tidak dibuat secara dinamis, format awal tidak pernah dipilih.Berikut adalah direktif angular-datetime yang sangat berguna . Anda bisa menggunakannya seperti ini:
Itu juga menambahkan mask ke input Anda dan melakukan validasi.
sumber
datetime="<format>"
atribut cocok dengan format yang ditentukan dalam opsi DatepickerdateFormat
.Saya telah membuat arahan sederhana untuk mengaktifkan
input[type="date"]
elemen formulir standar agar berfungsi dengan benar dengan AngularJS ~ 1.2.16.Lihat di sini: https://github.com/betsol/angular-input-date
Dan inilah demonya: http://jsfiddle.net/F2LcY/1/
sumber
Saya menggunakan jquery datepicker untuk memilih tanggal. Tanggal baca direktif saya dan mengubahnya menjadi format tanggal json (dalam milidetik) disimpan dalam
ng-model
data sambil menampilkan tanggal yang diformat. Dan sebaliknya jika ng-model memiliki tanggal json (dalam milidetik) tampilan formatter saya dalam format saya sebagai jquery datepicker.Kode Html:
Arahan Sudut:
sumber
element.datepicker
denganelement.pickadate
Karena Anda telah menggunakan datepicker sebagai kelas, saya berasumsi Anda menggunakan datepicker Jquery atau yang serupa.
Ada cara untuk melakukan apa yang Anda inginkan tanpa menggunakan moment.js sama sekali, hanya menggunakan arahan datepicker dan angularjs.
Saya telah memberikan contoh di sini di Fiddle ini
Kutipan dari biola di sini:
Datepicker memiliki format yang berbeda dan format angularjs berbeda, perlu menemukan kecocokan yang sesuai sehingga tanggal dipilih sebelumnya dalam kontrol dan juga diisi di bidang input saat model-ng terikat. Format di bawah ini setara dengan
'mediumDate'
format AngularJS.Direktif input tanggal harus memiliki variabel string sementara untuk mewakili bentuk tanggal yang dapat dibaca manusia.
Menyegarkan di berbagai bagian laman harus dilakukan melalui acara, seperti
$broadcast
dan$on
.Menggunakan filter untuk merepresentasikan tanggal dalam bentuk yang dapat dibaca manusia juga dimungkinkan dalam ng-model tetapi dengan variabel model sementara.
sumber
Saya menggunakan petunjuk berikut yang membuat saya dan sebagian besar pengguna sangat senang! Ini menggunakan momen untuk parsing dan pemformatan. Ini terlihat sedikit mirip dengan yang oleh SunnyShah, yang disebutkan sebelumnya.
Dalam formulir saya, saya menggunakannya seperti ini:
Ini akan mengikat stempel waktu (milidetik sejak 1970) ke
doc.begin
dandoc.end
.sumber
ngModel
adalah pengenal kustom Anda untuk argumen controller, bukan referensi langsung bernama kengModel
. Ini adalah tempat di mana konvensi penamaan arg 'ctrl' atau 'controller' membuat segalanya lebih jelas dan menghindari kebingungan.Di Angular2 + untuk siapa pun yang tertarik:
dengan jenis filter di DatePipe Angular.
sumber
Saya lebih suka server mengembalikan tanggal tanpa modifikasi, dan meminta javascript melakukan tampilan memijat. API saya mengembalikan "MM / DD / YYYY hh: mm: ss" dari SQL Server.
Sumber
Kontroler
Petunjuk Validasi myDate
HTML
template / validation / messages.html
sumber
Angularjs ui bootstrap Anda dapat menggunakan angularjs ui bootstrap, ini juga menyediakan validasi tanggal
dalam kontroler dapat menentukan format apa pun yang Anda inginkan untuk menampilkan tanggal sebagai datefilter
$ scope.formats = ['dd-MMMM-yyyy', 'yyyy / MM / dd', 'dd.MM.yyyy', 'shortDate'];
sumber