Simple angularjs date d'entrée
J'ai une page de modification d'un événement et l'un de mes champs est une date. Dans certains navigateurs, il semble agir comme une zone de texte brut (IE8), cependant dans chrome, il affiche "jj/mm/aaaa" et si vous cliquez sur ce qu'il a quelques options supplémentaires pour le réglage de la date.
Mon problème est bien sur la page d'édition, il n'est pas du remplissage de la date existant (j'imagine car il n'est pas dans le bon format?). Le MVC contrôleur renvoie les données dans ce format "2014-03-08T00:00:00" (juste à l'aide de la base contrôleur CRUD actions).
<form name="form" class="form-horizontal">
<div class="control-group" ng-class="{error: form.EventDate.$invalid}">
<label class="control-label" for="EventDate">Event Date</label>
<div class="controls">
<input type="date" ng-model="item.EventDate" id="EventDate">
</div>
</div>
<div class="form-actions">
<button ng-click="save()" class="btn btn-primary">
{{action}}
</button>
<a href="#/" class="btn">Cancel</a>
</div>
</form>
J'ai vu pas mal de posts sur l'utilisation des directives et des montres, mais cela semble compliqué. J'aurais pensé qu'il y aurait eu un moyen relativement simple de mise en forme les données du modèle, afin qu'il s'affiche dans le format adéquat et fonctionne comme prévu. Je n'ai pas l'esprit si Chrome donne une expérience différente que les autres navigateurs - c'est juste un simple utilisateur interne site web. Je n'aime pas que ce n'est pas prepopulating la date à laquelle j'ai modifier un enregistrement.
OriginalL'auteur Jen | 2014-07-04
Vous devez vous connecter pour publier un commentaire.
Si vous voulez remplir le champ avec une valeur initiale, alors la liste suivante sera le travail
Cependant, je recommande fortement la création d'un champ de date personnalisé directive.
Personnalisé champ de saisie de la directive offre les avantages suivants:
Par exemple, lorsque vous saisissez une date valide dans le champ de saisie, il sera automatiquement attribuer un javascript date pour le modèle; et lorsque vous attribuez un javascript valide date que le modèle, il sera automatiquement format dans le champ de texte.
form.$valid
de faux, de sorte que vous pouvez conditionnellement soumettre le formulaire au serveur.Il y a trois choses de base à considérer lors de la mise en œuvre d'une date personnalisée directive:
Date De La Directive:
Remarque: Pour l'analyse de dates, de cette directive utilise Date.js (une bibliothèque externe).
CSS:
HTML:
Contrôleur:
Démo JS Fiddle avec Date.js
Démo JS Fiddle avec Moment.js
Bien que, en essayant d'inclure la date.js fichier, il est en train de faire quelques funky fuseau horaire de conversion donc je vais entrez la date comme le 22/08/2014 et de voir que la valeur en dollars de la portée.élément dans le fichier js, mais quand il frappe mon MVC contrôleur soudain 21/08/2014 2:00:00 PM. J'ai même utilisé le fr-AU fichier (après avoir lu les instructions de téléchargement :/ ))
Pas mal 🙂 Une petite remarque: Dans votre $parser, vous devez retourner undefined si la valeur invalide (non null).
Timeszones peut être difficile, j'ai été fauché une fois ou deux fois par moi-même. @ExpertSystem, merci pour la capture, je vais mettre à jour ma réponse.
J'ai ajouté un lien vers la démo Moment.js. Il semble être un peu plus complet que Date.js. Permettez-moi de savoir comment il va.
OriginalL'auteur pixelbits